Author: DavidCzech
Date: 2008-09-10 15:02:17 -0400 (Wed, 10 Sep 2008)
New Revision: 1358
Modified:
trunk/pysoy/examples/pysoy_primer.py
trunk/pysoy/include/soy.models.pxd
trunk/pysoy/src/models/Axis.pym
Log:
* No Ticket : Changing Axis to VBO
Modified: trunk/pysoy/examples/pysoy_primer.py
===================================================================
--- trunk/pysoy/examples/pysoy_primer.py 2008-09-08 23:45:36 UTC (rev
1357)
+++ trunk/pysoy/examples/pysoy_primer.py 2008-09-10 19:02:17 UTC (rev
1358)
@@ -15,7 +15,7 @@
cube = soy.shapes.Box(1, 1, 1) # Step 1: Shape
mat = soy.materials.Material() # Step 2: Material
mat.shininess = 5 # (Optional) Looks nicer (modifies the applied specular
lighting; play with this setting to see how it affects appearance)
-body = soy.bodies.Body(scene=sce, model=soy.models.Shape(mat), shape=cube) #
Step 3: Body
+body = soy.bodies.Body(scene=sce, model=soy.models.Axis(), shape=cube) # Step
3: Body
# Put a light and camera into the initialized screen
light = soy.bodies.Light(sce)
@@ -31,4 +31,4 @@
# Main loop: each run through this loop keeps the window open and rotates the
cube
while True:
- sleep(.1)
\ No newline at end of file
+ sleep(.1)
Modified: trunk/pysoy/include/soy.models.pxd
===================================================================
--- trunk/pysoy/include/soy.models.pxd 2008-09-08 23:45:36 UTC (rev 1357)
+++ trunk/pysoy/include/soy.models.pxd 2008-09-10 19:02:17 UTC (rev 1358)
@@ -98,3 +98,13 @@
# WindowLoop functions
cdef void _renderSurf ( self )
cdef void _renderBottom ( self )
+
+cdef class Axis (Model) :
+ cdef gl.GLuint _vertexBuffer# VBO ids
+ cdef gl.GLuint _elementBuffer
+ cdef float _axis[12] # contains both vertex and color
data
+ cdef char _elements[2] # contains infomation to
render the above vertex data in order
+ cdef void _createBuffer ( self )
+
+
+
Modified: trunk/pysoy/src/models/Axis.pym
===================================================================
--- trunk/pysoy/src/models/Axis.pym 2008-09-08 23:45:36 UTC (rev 1357)
+++ trunk/pysoy/src/models/Axis.pym 2008-09-10 19:02:17 UTC (rev 1358)
@@ -23,8 +23,36 @@
This L{models class<soy.models>} renders a "XYZ axis" oriented to each
body it's attached to. This is useful for debugging.
'''
+ def __cinit__( self ) :
+ #self._axis = <gl.GLfloat *> ( 0,0,0, 1,0,0, # format XYZRGB
+ # 1,0,0, 1,0,0 )
+ # # 1.,0.3,0. 1,0,0
+ self._axis[0] = 0
+ self._axis[1] = 0
+ self._axis[2] = 0
+ self._axis[3] = 1
+ self._axis[4] = 0
+ self._axis[5] = 0
+ self._axis[6] = 1
+ self._axis[7] = 0
+ self._axis[8] = 0
+ self._axis[9] = 1
+ self._axis[10] = 0
+ self._axis[11] = 0
+ self._elements[0] = <char>0
+ self._elements[1] = <char>1
+ self._vertexBuffer = 0
+ self._elementBuffer = 0
+ # Generate Buffers
+
+ cdef void _createBuffer(self) :
+ gl.glGenBuffersARB(1, <gl.GLuint*> &self._vertexBuffer);
+ gl.glBindBufferARB(gl.GL_ARRAY_BUFFER_ARB, self._vertexBuffer);
+ gl.glBufferDataARB(gl.GL_ARRAY_BUFFER_ARB,sizeof(self._axis) , self._axis,
gl.GL_STATIC_DRAW_ARB);
+ gl.glGenBuffersARB(1, <gl.GLuint*> &self._elementBuffer);
+ gl.glBindBufferARB(gl.GL_ARRAY_BUFFER_ARB, self._elementBuffer);
+ gl.glBufferDataARB(gl.GL_ARRAY_BUFFER_ARB, sizeof(self._elements),
self._elements, gl.GL_STATIC_DRAW_ARB);
-
############################################################################
#
# WindowLoop Functions
@@ -33,70 +61,26 @@
cdef void _render(self, soy.bodies.Body _body) :
#
# This should be upgraded to use VBO. Test for buffer ID here.
- #
- gl.glPushMatrix()
+ #
+ if self._vertexBuffer :
+ gl.glBindBufferARB(gl.GL_ARRAY_BUFFER_ARB, <gl.GLuint>
self._vertexBuffer) # Bind to buffer for rendering below
+ gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._elementBuffer)
+ else:
+ self._createBuffer()
+ gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY);
+ gl.glDisableClientState(gl.GL_NORMAL_ARRAY);
+ gl.glEnableClientState(gl.GL_COLOR_ARRAY); # We need to render with color
arrays
+ gl.glVertexPointer(3, gl.GL_FLOAT, 0,<gl.GLvoid *> 0);
+ gl.glColorPointer(3,gl.GL_FLOAT,3*sizeof(float),<gl.GLvoid *>0);
+ #gl.glPushMatrix()
gl.glDisable(gl.GL_CULL_FACE)
gl.glDisable(gl.GL_DEPTH_TEST)
gl.glDisable(gl.GL_LIGHTING)
- gl.glColor3f(1.,0.,0.)
- gl.glBegin(gl.GL_LINES)
- gl.glColor3f(1.,0.,0.)
- gl.glVertex3f(0.,0.,0.)
- gl.glVertex3f(1.,0.,0.)
- gl.glVertex3f(1.,0.,0.)
- gl.glVertex3f(1.,0.3,0.)
- gl.glVertex3f(1.,0.3,0.)
- gl.glVertex3f(1.3,0,0.)
- gl.glVertex3f(1.3,0,0.)
- gl.glVertex3f(1,-0.3,0.)
- gl.glVertex3f(1,-0.3,0.)
- gl.glVertex3f(1,0,0.)
- gl.glColor3f(0.,1.,0.)
- gl.glVertex3f(0.,0.,0.)
- gl.glVertex3f(0.,1.,0.)
- gl.glVertex3f(0.,1.,0.)
- gl.glVertex3f(0.3,1.,0.)
- gl.glVertex3f(0.3,1.,0.)
- gl.glVertex3f(0.0,1.3,0.)
- gl.glVertex3f(0.0,1.3,0.)
- gl.glVertex3f(-0.3,1.0,0.)
- gl.glVertex3f(-0.3,1.0,0.)
- gl.glVertex3f(0.,1.0,0.)
- gl.glColor3f(0.,0.,1.)
- gl.glVertex3f(0.,0.,0.)
- gl.glVertex3f(0.,0.,1.)
- gl.glVertex3f(0.,0.,1.)
- gl.glVertex3f(0.3,0.,1.)
- gl.glVertex3f(0.3,0.,1.)
- gl.glVertex3f(0.0,0.,1.3)
- gl.glVertex3f(0.0,0.,1.3)
- gl.glVertex3f(-0.3,0.,1.0)
- gl.glVertex3f(-0.3,0.,1.0)
- gl.glVertex3f(0.0,0.,1.0)
- gl.glEnd()
- gl.glBegin(gl.GL_LINE_STRIP)
- gl.glColor3f(0.,0.,1.)
- gl.glVertex3f(-0.2,0,1.35)#
- gl.glVertex3f(0.2,0.,1.35)
- gl.glVertex3f(-0.2,0.,1.75) # Z TAG
- gl.glVertex3f(0.2,0.,1.75) #
- gl.glEnd()
- gl.glBegin(gl.GL_LINE_STRIP)
- gl.glColor3f(0.,1.,0)
- gl.glVertex3f(0.0,1.35,0)#
- gl.glVertex3f(0.0,1.5,0) # Y TAG
- gl.glVertex3f(0.2,1.7,0) #
- gl.glVertex3f(0.0,1.5,0)
- gl.glVertex3f(-0.2,1.7,0)
- gl.glEnd()
- gl.glBegin(gl.GL_LINES)
- gl.glColor3f(1.,0.,0.)
- gl.glVertex3f(1.35,0.2,0)#
- gl.glVertex3f(1.75,-0.2,0) # X TAG
- gl.glVertex3f(1.35,-0.2,0) #
- gl.glVertex3f(1.75,0.2,0)
- gl.glEnd()
+ gl.glDrawElements(gl.GL_LINES,1,gl.GL_UNSIGNED_BYTE,<gl.GLvoid *>0)
gl.glEnable(gl.GL_LIGHTING)
gl.glEnable(gl.GL_DEPTH_TEST)
gl.glEnable(gl.GL_CULL_FACE)
- gl.glPopMatrix()
+ #gl.glPopMatrix()
+ gl.glDisableClientState(gl.GL_COLOR_ARRAY);
+ gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY);
+ gl.glEnableClientState(gl.GL_NORMAL_ARRAY);
_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn