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

Reply via email to