Author: ArcRiley
Date: 2007-07-03 20:06:03 -0400 (Tue, 03 Jul 2007)
New Revision: 331
Modified:
trunk/pysoy/include/gl.pxd
trunk/pysoy/src/materials/Material.pxi
trunk/pysoy/src/textures/Image.pxi
trunk/pysoy/src/textures/Texture.pxi
trunk/pysoy/src/textures/soy.textures.pxd
Log:
1D and 3D texture rendering
Modified: trunk/pysoy/include/gl.pxd
===================================================================
--- trunk/pysoy/include/gl.pxd 2007-07-03 22:26:43 UTC (rev 330)
+++ trunk/pysoy/include/gl.pxd 2007-07-04 00:06:03 UTC (rev 331)
@@ -987,7 +987,7 @@
cdef GLubyte *glGetString ( GLenum )
cdef void glFinish ( )
cdef void glFlush ( )
- cdef void glHint ( GLenum target, GLenum )
+ cdef void glHint ( GLenum, GLenum )
# Depth Buffer
cdef void glClearDepth ( GLclampd )
@@ -998,7 +998,7 @@
cdef void glOrtho( GLdouble left, GLdouble right, \
GLdouble bottom, GLdouble top, \
GLdouble near_val, GLdouble far_val )
- cdef void glViewport( GLint x, GLint y, GLsizei width, GLsizei height )
+ cdef void glViewport( GLint x, GLint y, GLsizei, GLsizei height )
cdef void glPushMatrix()
cdef void glPopMatrix()
cdef void glLoadIdentity()
@@ -1028,11 +1028,11 @@
cdef void glDeleteBuffersARB ( GLsizei, GLuint* )
cdef void glGenBuffersARB ( GLsizei, GLuint* )
cdef void glBufferDataARB ( GLenum, GLsizeiptrARB, GLvoid*,
- GLenum )
- cdef void glBufferSubDataARB ( GLenum, GLintptrARB,
GLsizeiptrARB,
- GLvoid* )
- cdef void glGetBufferSubDataARB ( GLenum, GLintptrARB,
GLsizeiptrARB,
- GLvoid* )
+ GLenum )
+ cdef void glBufferSubDataARB ( GLenum, GLintptrARB,
+ GLsizeiptrARB, GLvoid* )
+ cdef void glGetBufferSubDataARB ( GLenum, GLintptrARB,
+ GLsizeiptrARB, GLvoid* )
cdef void *glMapBufferARB ( GLenum, GLenum )
cdef void glGetBufferParameterivARB ( GLenum, GLenum, GLint* )
cdef void glGetBufferPointervARB ( GLenum, GLenum, GLvoid** )
@@ -1051,27 +1051,32 @@
cdef void glLightModeli ( GLenum, GLint )
cdef void glLightModelfv ( GLenum, GLfloat* )
cdef void glLightModeliv ( GLenum, GLint* )
- cdef void glMaterialf ( GLenum face, GLenum, GLfloat )
- cdef void glMateriali ( GLenum face, GLenum, GLint )
- cdef void glMaterialfv ( GLenum face, GLenum, GLfloat* )
- cdef void glMaterialiv ( GLenum face, GLenum, GLint* )
- cdef void glGetMaterialfv ( GLenum face, GLenum, GLfloat* )
- cdef void glGetMaterialiv ( GLenum face, GLenum, GLint* )
- cdef void glColorMaterial ( GLenum face, GLenum mode )
+ cdef void glMaterialf ( GLenum, GLenum, GLfloat )
+ cdef void glMateriali ( GLenum, GLenum, GLint )
+ cdef void glMaterialfv ( GLenum, GLenum, GLfloat* )
+ cdef void glMaterialiv ( GLenum, GLenum, GLint* )
+ cdef void glGetMaterialfv ( GLenum, GLenum, GLfloat* )
+ cdef void glGetMaterialiv ( GLenum, GLenum, GLint* )
+ cdef void glColorMaterial ( GLenum, GLenum )
# Texture Mapping
- cdef void glTexParameterf ( GLenum target, GLenum pname, GLfloat param )
- cdef void glTexParameteri ( GLenum target, GLenum pname, GLint param )
- cdef void glTexImage2D ( GLenum target, GLint level, GLint
internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, GLvoid *pixels )
- cdef void glGenTextures ( GLsizei n, GLuint *textures )
- cdef void glDeleteTextures ( GLsizei n, GLuint *textures)
- cdef void glBindTexture ( GLenum target, GLuint texture )
- cdef GLboolean glIsTexture ( GLuint texture )
+ cdef void glTexParameterf ( GLenum, GLenum, GLfloat )
+ cdef void glTexParameteri ( GLenum, GLenum, GLint )
+ cdef void glTexImage1D ( GLenum, GLint, GLint, GLsizei, GLint, GLenum,
+ GLenum, GLvoid* )
+ cdef void glTexImage2D ( GLenum, GLint, GLint, GLsizei, GLsizei, GLint,
+ GLenum, GLenum, GLvoid* )
+ cdef void glTexImage3D ( GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei,
+ GLint, GLenum, GLenum, GLvoid* )
+ cdef void glGenTextures ( GLsizei, GLuint* )
+ cdef void glDeleteTextures ( GLsizei, GLuint* )
+ cdef void glBindTexture ( GLenum, GLuint )
+ cdef GLboolean glIsTexture ( GLuint )
# GLU
- cdef void gluPerspective( GLdouble fovy, GLdouble aspect,
- GLdouble zNear, GLdouble zFar )
+ cdef void gluPerspective( GLdouble, GLdouble,
+ GLdouble, GLdouble )
# GLEW
cdef GLenum glewInit ( )
Modified: trunk/pysoy/src/materials/Material.pxi
===================================================================
--- trunk/pysoy/src/materials/Material.pxi 2007-07-03 22:26:43 UTC (rev
330)
+++ trunk/pysoy/src/materials/Material.pxi 2007-07-04 00:06:03 UTC (rev
331)
@@ -40,11 +40,12 @@
cdef void _render(self) :
+ cdef float _white[4]
+ _white[0] = 1.0
+ _white[1] = 1.0
+ _white[2] = 1.0
if self._colorTex :
- #gl.glMaterialfv(gl.GL_FRONT, gl.GL_AMBIENT_AND_DIFFUSE, clear)
- gl.glDisable(gl.GL_TEXTURE_1D)
- gl.glEnable(gl.GL_TEXTURE_2D)
- gl.glDisable(gl.GL_TEXTURE_3D)
+ gl.glMaterialfv(gl.GL_FRONT, gl.GL_AMBIENT_AND_DIFFUSE, _white)
(<soy.textures.Texture> self._color)._bind()
else :
gl.glDisable(gl.GL_TEXTURE_1D)
Modified: trunk/pysoy/src/textures/Image.pxi
===================================================================
--- trunk/pysoy/src/textures/Image.pxi 2007-07-03 22:26:43 UTC (rev 330)
+++ trunk/pysoy/src/textures/Image.pxi 2007-07-04 00:06:03 UTC (rev 331)
@@ -35,9 +35,9 @@
# 1D Texture
if img.size[1] != 1 :
idata = idata.rotate(90) # Make the data horizontal
- lx = self._squareup(len(data))
+ lx = self._squareup(len(idata))
ly = 1
- if lx != len(data) :
+ if lx != len(idata) :
idata = idata.resize((lx, 1))
else :
# 2D Texture
Modified: trunk/pysoy/src/textures/Texture.pxi
===================================================================
--- trunk/pysoy/src/textures/Texture.pxi 2007-07-03 22:26:43 UTC (rev
330)
+++ trunk/pysoy/src/textures/Texture.pxi 2007-07-04 00:06:03 UTC (rev
331)
@@ -57,6 +57,14 @@
.type will be a property for what a texture applies to.
'''
+ self._iFormats[1] = gl.GL_LUMINANCE8
+ self._iFormats[2] = gl.GL_LUMINANCE8_ALPHA8
+ self._iFormats[3] = gl.GL_RGB8
+ self._iFormats[4] = gl.GL_RGBA8
+ self._oFormats[1] = gl.GL_LUMINANCE
+ self._oFormats[2] = gl.GL_LUMINANCE_ALPHA
+ self._oFormats[3] = gl.GL_RGB
+ self._oFormats[4] = gl.GL_RGBA
# This property is for debugging only
property id :
@@ -96,6 +104,20 @@
return <char *> self._texels
cdef void _bind(self) :
+ if self._textureTarget == gl.GL_TEXTURE_1D :
+ gl.glEnable(gl.GL_TEXTURE_1D)
+ gl.glDisable(gl.GL_TEXTURE_2D)
+ gl.glDisable(gl.GL_TEXTURE_3D)
+ elif self._textureTarget == gl.GL_TEXTURE_2D :
+ gl.glDisable(gl.GL_TEXTURE_1D)
+ gl.glEnable(gl.GL_TEXTURE_2D)
+ gl.glDisable(gl.GL_TEXTURE_3D)
+ elif self._textureTarget == gl.GL_TEXTURE_3D :
+ gl.glDisable(gl.GL_TEXTURE_1D)
+ gl.glDisable(gl.GL_TEXTURE_2D)
+ gl.glEnable(gl.GL_TEXTURE_3D)
+ else :
+ return
if self._textureID == 0 :
gl.glGenTextures(1, &self._textureID)
gl.glBindTexture(self._textureTarget, self._textureID)
@@ -103,15 +125,22 @@
gl.GL_LINEAR)
gl.glTexParameteri(self._textureTarget, gl.GL_TEXTURE_MIN_FILTER,
gl.GL_LINEAR)
- # Assumes 3 channels (RGB) - need to fix.
- if self._chans == 3 :
- gl.glTexImage2D(self._textureTarget, 0, gl.GL_RGB8, self._width,
- self._height, 0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE,
+ if self._textureTarget == gl.GL_TEXTURE_1D :
+ gl.glTexImage1D(gl.GL_TEXTURE_1D, 0, self._iFormats[self._chans],
+ self._width, 0,
+ self._oFormats[self._chans], gl.GL_UNSIGNED_BYTE,
self._texels)
- elif self._chans == 4 :
- gl.glTexImage2D(self._textureTarget, 0, gl.GL_RGBA8, self._width,
- self._height, 0, gl.GL_RGBA, gl.GL_UNSIGNED_BYTE,
+ elif self._textureTarget == gl.GL_TEXTURE_2D :
+ gl.glTexImage2D(gl.GL_TEXTURE_2D, 0, self._iFormats[self._chans],
+ self._width, self._height, 0,
+ self._oFormats[self._chans], gl.GL_UNSIGNED_BYTE,
self._texels)
+ else :
+ gl.glTexImage3D(gl.GL_TEXTURE_3D, 0, self._iFormats[self._chans],
+ self._width, self._height, self._depth, 0,
+ self._oFormats[self._chans], gl.GL_UNSIGNED_BYTE,
+ self._texels)
+
else :
gl.glBindTexture(self._textureTarget, self._textureID)
Modified: trunk/pysoy/src/textures/soy.textures.pxd
===================================================================
--- trunk/pysoy/src/textures/soy.textures.pxd 2007-07-03 22:26:43 UTC (rev
330)
+++ trunk/pysoy/src/textures/soy.textures.pxd 2007-07-04 00:06:03 UTC (rev
331)
@@ -30,6 +30,9 @@
cdef int _height
cdef int _depth
cdef gl.GLubyte *_texels
+ # Lookup Arrays
+ cdef int _iFormats[5]
+ cdef int _oFormats[5]
# C functions
cdef void _bind(self)
cdef void _resize(self, int, int, int, int)
_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn