bgl/BGE: glCopyTexImage2D + bgl.buffer creation error more verbose + dome post_draw (it draw only for the last overlayed scene)
1) glCopyTexImage2D - www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml 2) dome post_draw. Now dome mode can also use scene.post_draw. It only runs for the last scene. It's really useful. I'm working on a nice showcase for this (a dome visualizer for the dome mode running with bgl. In the mean time this is a (lame) example of both working together (the buffer is being copied and draw on top of the window): http://blenderecia.orgfree.com/blender/tmp/dome_bgl_copytex2d.jpg
This commit is contained in:
@@ -318,6 +318,34 @@ def glCopyPixels(x, y, width, height, type):
|
||||
@type type: Enumerated constant
|
||||
@param type: Specifies whether color values, depth values, or stencil values are to be copied.
|
||||
"""
|
||||
|
||||
def glCopyTexImage2D(target, level, internalformat, x, y, width, height, border):
|
||||
"""
|
||||
Copy pixels into a 2D texture image
|
||||
@see: U{www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml}
|
||||
|
||||
@type target: Enumerated constant
|
||||
@param target: Specifies the target texture.
|
||||
@type level: int
|
||||
@param level: Specifies the level-of-detail number. Level 0 is the base image level.
|
||||
Level n is the nth mipmap reduction image.
|
||||
@type internalformat: int
|
||||
@param internalformat: Specifies the number of color components in the texture.
|
||||
@type width: int
|
||||
@type x, y: int
|
||||
@param x, y:Specify the window coordinates of the first pixel that is copied
|
||||
from the frame buffer. This location is the lower left corner of a rectangular
|
||||
block of pixels.
|
||||
@param width: Specifies the width of the texture image. Must be 2n+2(border) for
|
||||
some integer n. All implementations support texture images that are at least 64
|
||||
texels wide.
|
||||
@type height: int
|
||||
@param height: Specifies the height of the texture image. Must be 2m+2(border) for
|
||||
some integer m. All implementations support texture images that are at least 64
|
||||
texels high.
|
||||
@type border: int
|
||||
@param border: Specifies the width of the border. Must be either 0 or 1.
|
||||
"""
|
||||
|
||||
def glCullFace(mode):
|
||||
"""
|
||||
|
@@ -355,7 +355,10 @@ static int Buffer_ass_slice(PyObject *self, int begin, int end, PyObject *seq)
|
||||
}
|
||||
|
||||
if (PySequence_Length(seq)!=(end-begin)) {
|
||||
PyErr_SetString(PyExc_TypeError, "size mismatch in assignment");
|
||||
int seq_len = PySequence_Length(seq);
|
||||
char err_str[128];
|
||||
sprintf(err_str, "size mismatch in assignment. Expected size: %d (size provided: %d)", seq_len, (end-begin));
|
||||
PyErr_SetString(PyExc_TypeError, err_str);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -476,6 +479,7 @@ BGL_Wrap(1, Color4usv, void, (GLushortP))
|
||||
BGL_Wrap(4, ColorMask, void, (GLboolean, GLboolean, GLboolean, GLboolean))
|
||||
BGL_Wrap(2, ColorMaterial, void, (GLenum, GLenum))
|
||||
BGL_Wrap(5, CopyPixels, void, (GLint, GLint, GLsizei, GLsizei, GLenum))
|
||||
BGL_Wrap(8, CopyTexImage2D, void, (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint))
|
||||
BGL_Wrap(1, CullFace, void, (GLenum))
|
||||
BGL_Wrap(2, DeleteLists, void, (GLuint, GLsizei))
|
||||
BGL_Wrap(2, DeleteTextures, void, (GLsizei, GLuintP))
|
||||
@@ -819,6 +823,7 @@ static struct PyMethodDef BGL_methods[] = {
|
||||
MethodDef(ColorMask),
|
||||
MethodDef(ColorMaterial),
|
||||
MethodDef(CopyPixels),
|
||||
MethodDef(CopyTexImage2D),
|
||||
MethodDef(CullFace),
|
||||
MethodDef(DeleteLists),
|
||||
MethodDef(DeleteTextures),
|
||||
|
Reference in New Issue
Block a user