Author: ArcRiley
Date: 2007-07-08 07:40:24 -0400 (Sun, 08 Jul 2007)
New Revision: 422
Modified:
trunk/pysoy/src/_datatypes/FaceList.pxi
trunk/pysoy/src/_datatypes/VertexList.pxi
trunk/pysoy/src/_datatypes/soy._datatypes.pxd
trunk/pysoy/src/_datatypes/soy._datatypes.pyx
trunk/pysoy/src/atoms/Face.pxi
trunk/pysoy/src/atoms/Vertex.pxi
trunk/pysoy/src/atoms/soy.atoms.pxd
trunk/pysoy/src/bodies._bodies/Mesh.pxi
trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
Log:
Moning Mesh "Face" stuff to soy._datatypes.FaceList
Modified: trunk/pysoy/src/_datatypes/FaceList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/FaceList.pxi 2007-07-08 09:37:55 UTC (rev
421)
+++ trunk/pysoy/src/_datatypes/FaceList.pxi 2007-07-08 11:40:24 UTC (rev
422)
@@ -17,51 +17,101 @@
#
# $Id$
-cimport soy.atoms
-cimport soy.bodies._bodies
-
cdef class FaceList :
'''PySoy FaceList
This is a list-like container class for the faces of a soy.bodies.Mesh
'''
- # This class is not intended to be stored or transfered on it's own but
- # rather as part of it's parent Mesh. Parent must be in __new__ as
- # it's parent holds the data this class works on.
-
def __new__(self, mesh) :
if not isinstance(mesh, soy.bodies._bodies.Mesh) :
raise TypeError('argument must be of type soy.bodies.Mesh')
- self._mesh = mesh
+ self._mesh = <void *> mesh
+ self._children = soy._internals.Children()
+
def __len__(self) :
- return (<soy.bodies._bodies.Mesh> self._mesh)._nface
+ return self._arraySize
+
def __str__(self) :
return '<FaceList with %d faces>' % self.__len__()
+
def __repr__(self) :
- return self.__str__()
+ return '<FaceList with %d faces>' % self.__len__()
- def __getitem__(self, index) :
- cdef object f
- f = soy.atoms.Face()
- (<soy.atoms.Face> f)._addList(mesh, index)
- return f
- def append(self, item) :
+ def __getitem__(self, _index) :
+ cdef int i, _found
+ cdef soy.atoms.Face _face
+ #
+ # Check to see if there's already a Face instance made, if so return it,
+ # otherwise create a new instance and return that. We do this to prevent
+ # duplicate Face instances and to prevent having to internally hold an
+ # instance of every face in every mesh - that'd eat way too much memory.
+ #
+ _found = 0
+ self._children.lock()
+ for i from 0 <= i < self._children.current :
+ if (<soy.atoms.Face> self._children.list[i])._index == _index :
+ _face = <soy.atoms.Face> self._children.list[i]
+ _found = 1
+ break
+ self._children.unlock()
+ if not _found :
+ _face = soy.atoms.Face(mesh = <soy.bodies._bodies.Mesh> self._mesh,
+ index= _index)
+ return _face
+
+
+ cdef void _renderArray(self, int _offset, int _length) :
+ gl.glDrawElements (gl.GL_TRIANGLES, _length*3,
+ gl.GL_UNSIGNED_SHORT, self._array + _offset)
+
+
+ cdef void _renderBuffer(self, int _offset, int _length) :
+ gl.glDrawElements (gl.GL_TRIANGLES, _length*3,
+ gl.GL_UNSIGNED_SHORT, (<Face *> 0) + _offset)
+
+
+ cdef void _createBuffer(self) :
+ self._bufferAlloc = self._arrayAlloc
+ self._updateRange.offset = -1
+ gl.glGenBuffersARB(1, &self._buffer)
+ gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._buffer)
+ gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+ self._array, gl.GL_STATIC_DRAW_ARB)
+
+
+ cdef void _flagUpdated(self, int _index) :
+ if _index < self._updateRange.offset or self._updateRange.offset == -1 :
+ self._updateRange.offset = _index
+ if _index - self._updateRange.offset > self._updateRange.length :
+ self._updateRange.length = _index - self._updateRange.offset
+
+ cdef void _sendUpdated(self) :
+ if self._updateRange.offset == -1 :
+ return
+ # If in the process of writing, wait until next cycle to send
+ if not self._children.trylock() :
+ return
+ # If the range to be updated is larger than the existing buffer
+ if self._updateRange.offset+self._updateRange.length > self._bufferAlloc :
+ self._bufferAlloc = self._arrayAlloc
+ gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+ self._array, gl.GL_STATIC_DRAW_ARB)
+ else :
+ gl.glBufferSubDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB,
+ 6 * self._updateRange.offset,
+ 6 * (self._updateRange.length+1),
+ &self._array[self._updateRange.offset])
+ self._updateRange.offset = -1
+ self._updateRange.length = 0
+ self._children.unlock()
+
+
+ cdef void _allocArray(self, int num) :
cdef soy.bodies._bodies.Mesh _mesh
-
- if not isinstance(item, soy.atoms.Face) :
- raise TypeError('may only add instances of soy.atoms.Face to this list')
- if (<soy.atoms.Face> item)._index != -1 :
- raise TypeError('this Face is already part of a Mesh, try .clone()')
_mesh = <soy.bodies._bodies.Mesh> self._mesh
- _mesh._cface.lock()
- _mesh._allocFaces(_mesh._nface + 1)
- (<soy.atoms.Face> item)._addList(_mesh, _mesh._nface)
- (<soy.atoms.Face> item)._setList()
- self._mesh._flagFaceVBO(self._index)
- _mesh._nface = _mesh._nface + 1
- _mesh._cface.unlock()
-
+ self._array = <Face *> _mesh._alloc(num, &self._arrayAlloc,
+ self._array, sizeof(Face))
Modified: trunk/pysoy/src/_datatypes/VertexList.pxi
===================================================================
--- trunk/pysoy/src/_datatypes/VertexList.pxi 2007-07-08 09:37:55 UTC (rev
421)
+++ trunk/pysoy/src/_datatypes/VertexList.pxi 2007-07-08 11:40:24 UTC (rev
422)
@@ -62,7 +62,7 @@
def __getitem__(self, _index) :
- cdef int i, f
+ cdef int i, _found
cdef soy.atoms.Vertex _vert
#
# Check to see if there's already a Vertex instance made, if so return it,
@@ -70,18 +70,20 @@
# duplicate Vertex instances and to prevent having to internally hold an
# instance of every vertex in every mesh - that'd eat way too much memory.
#
+ _found = 0
self._children.lock()
for i from 0 <= i < self._children.current :
if (<soy.atoms.Vertex> self._children.list[i])._index == _index :
_vert = <soy.atoms.Vertex> self._children.list[i]
- f = 1
+ _found = 1
break
self._children.unlock()
- if not f :
+ if not _found :
_vert = soy.atoms.Vertex(mesh = <soy.bodies._bodies.Mesh> self._mesh,
index= _index)
return _vert
+
cdef void _renderArray(self) :
gl.glVertexPointer (3, gl.GL_FLOAT, 36, &self._array[0].px)
gl.glNormalPointer ( gl.GL_FLOAT, 36, &self._array[0].nx)
@@ -120,7 +122,7 @@
# If the range to be updated is larger than the existing buffer
if self._updateRange.offset+self._updateRange.length > self._bufferAlloc :
self._bufferAlloc = self._arrayAlloc
- gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._bufferAlloc,
+ gl.glBufferDataARB(gl.GL_ARRAY_BUFFER_ARB, 36*self._bufferAlloc,
self._array, gl.GL_STATIC_DRAW_ARB)
else :
gl.glBufferSubDataARB(gl.GL_ARRAY_BUFFER_ARB,
Modified: trunk/pysoy/src/_datatypes/soy._datatypes.pxd
===================================================================
--- trunk/pysoy/src/_datatypes/soy._datatypes.pxd 2007-07-08 09:37:55 UTC
(rev 421)
+++ trunk/pysoy/src/_datatypes/soy._datatypes.pxd 2007-07-08 11:40:24 UTC
(rev 422)
@@ -23,6 +23,13 @@
cimport stdio
cimport soy._internals
+
+cdef struct Face :
+ unsigned short a
+ unsigned short b
+ unsigned short c
+
+
cdef struct Vert :
float px
float py
@@ -46,7 +53,20 @@
cdef class FaceList :
- cdef object _mesh
+ cdef void *_mesh
+ cdef soy._internals.Children _children # was cface
+ cdef Face *_array # was faces
+ cdef unsigned int _arraySize # was nface
+ cdef int _arrayAlloc # was mface
+ cdef gl.GLuint _buffer # was bface
+ cdef int _bufferAlloc # was aface
+ cdef Range _updateRange # was uface
+ cdef void _allocArray (self, int)
+ cdef void _renderArray (self, int, int)
+ cdef void _renderBuffer (self, int, int)
+ cdef void _createBuffer (self)
+ cdef void _sendUpdated (self)
+ cdef void _flagUpdated (self, int)
cdef class VertexList :
Modified: trunk/pysoy/src/_datatypes/soy._datatypes.pyx
===================================================================
--- trunk/pysoy/src/_datatypes/soy._datatypes.pyx 2007-07-08 09:37:55 UTC
(rev 421)
+++ trunk/pysoy/src/_datatypes/soy._datatypes.pyx 2007-07-08 11:40:24 UTC
(rev 422)
@@ -26,6 +26,9 @@
'by '+'$Author$'[9:-2]
__version__ = 'Trunk (r'+'$Rev$'[6:-2]+')'
+cimport soy.atoms
+cimport soy.bodies._bodies
+
include "HashTable.pxi"
include "FaceList.pxi"
include "VertexList.pxi"
Modified: trunk/pysoy/src/atoms/Face.pxi
===================================================================
--- trunk/pysoy/src/atoms/Face.pxi 2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/Face.pxi 2007-07-08 11:40:24 UTC (rev 422)
@@ -1,4 +1,4 @@
-# PySoy's Face class
+# PySoy's atoms.Face class
#
# Copyright (C) 2007 Team PySoy
#
@@ -20,95 +20,69 @@
cdef class Face :
'''PySoy Face
- An element of FaceList.
+ An element of FaceList with .verts property
'''
- def __new__(self, verts=(0,0,0)) :
- self.verts = verts
-
-
- def __richcmp__(self, peer, op) :
- cdef int r
- if not isinstance(peer, Face) :
- return False
- r = 0
- #
- # if not part of the same mesh, only return True for op !=
- if self._index == -1 or (<Face> peer)._index == -1 or \
- self._mesh != (<Face> peer)._mesh :
- return (op == 3)
- #
- # < or <=
- if op == 0 or op == 1 :
- r = r | self._index < (<Face> peer)._index
- #
- # == or !=
- if op == 2 or op == 3 :
- r = r | (not op & 1) == (self._index == (<Face> peer)._index)
- #
- # > or >=
- elif op == 4 or op == 5:
- r = r | self._index > (<Face> peer)._index
- return r
-
- def __repr__(self) :
- if self._index == -1 :
- return '<Face detached>'
+ def __new__(self, soy.bodies._bodies.Mesh mesh,
+ verts=None,
+ index=-1, *args, **keywords) :
+ self._index = -1
+ self._list = mesh._faces
+ if index >= 0 :
+ # For an instance of an existing vertex
+ if index >= self._list._arraySize :
+ raise ValueError('index out of range')
+ self._list._children.lock()
+ self._list._children.append(<void *>self)
+ self._index = index
+ self._list._children.unlock()
else :
- return '<Face attached as #%d>' % self._index
+ # For a brand new face
+ self._list._children.lock()
+ self._list._children.append(<void *>self)
+ self._index = self._list._arraySize
+ self._list._arraySize = self._list._arraySize + 1
+ self._list._allocArray (self._list._arraySize)
+ self._list._flagUpdated(self._index)
+ self._list._children.unlock()
+ if verts :
+ self.verts = verts
- cdef void _addList(self, soy.bodies._bodies.Mesh mesh, int index) :
- self._mesh = mesh
- self._index = index
- self._mesh._cface.append(<void *>self)
-
-
- cdef void _setList(self) :
- self._mesh._faces[self._index].a = self._saved_a._index
- self._mesh._faces[self._index].b = self._saved_b._index
- self._mesh._faces[self._index].c = self._saved_c._index
-
-
- cdef void _remList(self) :
- self._index = -1
- self._mesh._cface.lock()
- self._mesh._cface.remove(<void *>self)
- self._mesh._cface.unlock()
-
-
def __dealloc__(self) :
- if self._index > -1 :
- self._remList()
+ if self._index >= 0 :
+ self._list._children.lock()
+ self._list._children.remove(<void *>self)
+ self._list._children.unlock()
- def clone(self) :
- clone = Face()
- clone.verts = self.verts
- return clone
+ def __repr__(self) :
+ return '<Face>'
property verts :
def __get__(self) :
- if self._index != -1 :
- return (self._saved.a,
- self._saved.b,
- self._saved.c)
- else :
- return (Vertex(self._mesh, self._mesh._faces[self._index].a),
- Vertex(self._mesh, self._mesh._faces[self._index].b),
- Vertex(self._mesh, self._mesh._faces[self._index].c))
+ cdef float a, b, c
+ cdef object t
+ cdef soy._datatypes.VertexList _verts
+ _verts = (<soy.bodies._bodies.Mesh> self._list._mesh)._verts
+ self._list._children.lock()
+ t = (_verts[self._list._array[self._index].a],
+ _verts[self._list._array[self._index].b],
+ _verts[self._list._array[self._index].c])
+ self._list._children.unlock()
+ return t
def __set__(self, value) :
cdef int i
- if type(value)!=tuple and type(value)!=list :
+ if type(value) != tuple and type(value) != list :
raise TypeError('Must provide a tuple or list')
- if len(value)!=3 :
+ if len(value) != 3 :
raise TypeError('Must provide (x,y,z)')
for i from 0 <= i < 3 :
if type(value[i]) != Vertex :
- raise TypeError('All three items must be of type Vertex')
- self._saved_a = value[0]
- self._saved_b = value[1]
- self._saved_c = value[2]
- if self._index > -1 :
- self._setList()
- self._mesh._flagFaceVBO(self._index)
+ raise TypeError('All three elements must be of type Vertex')
+ self._list._children.lock()
+ self._list._array[self._index].a = (<Vertex> value[0])._index
+ self._list._array[self._index].b = (<Vertex> value[1])._index
+ self._list._array[self._index].c = (<Vertex> value[2])._index
+ self._list._flagUpdated(self._index)
+ self._list._children.unlock()
Modified: trunk/pysoy/src/atoms/Vertex.pxi
===================================================================
--- trunk/pysoy/src/atoms/Vertex.pxi 2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/Vertex.pxi 2007-07-08 11:40:24 UTC (rev 422)
@@ -1,4 +1,4 @@
-# PySoy's soy.atoms.Vertex class
+# PySoy's atoms.Vertex class
#
# Copyright (C) 2007 Team PySoy
#
@@ -76,10 +76,14 @@
self._list._children.unlock()
return t
def __set__(self, value) :
+ cdef int i
if type(value)!=tuple and type(value)!=list :
raise TypeError('Must provide a tuple or list')
if len(value)!=3 :
raise TypeError('Must provide (x,y,z)')
+ for i from 0 <= i < 3 :
+ if type(value[i]) != float and type(value[i]) != int :
+ raise TypeError('All three elements must be of type float')
self._list._children.lock()
self._list._array[self._index].px = value[0]
self._list._array[self._index].py = value[1]
Modified: trunk/pysoy/src/atoms/soy.atoms.pxd
===================================================================
--- trunk/pysoy/src/atoms/soy.atoms.pxd 2007-07-08 09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/atoms/soy.atoms.pxd 2007-07-08 11:40:24 UTC (rev 422)
@@ -29,14 +29,7 @@
cdef class Face :
- cdef soy.bodies._bodies.Mesh _mesh
+ cdef soy._datatypes.FaceList _list
cdef int _index
- cdef Vertex _saved_a
- cdef Vertex _saved_b
- cdef Vertex _saved_c
- cdef void *_saved_m
- cdef void _addList(self,soy.bodies._bodies.Mesh,int)
- cdef void _remList(self)
- cdef void _setList(self)
Modified: trunk/pysoy/src/bodies._bodies/Mesh.pxi
===================================================================
--- trunk/pysoy/src/bodies._bodies/Mesh.pxi 2007-07-08 09:37:55 UTC (rev
421)
+++ trunk/pysoy/src/bodies._bodies/Mesh.pxi 2007-07-08 11:40:24 UTC (rev
422)
@@ -23,13 +23,13 @@
This is a body which renders a group of triangles called a "mesh".
'''
def __new__(self, scene=None, *args, **keywords) :
- self._cface = soy._internals.Children()
+ self._faces = soy._datatypes.FaceList(self)
self._verts = soy._datatypes.VertexList(self)
def __repr__(self) :
return '<Mesh with %d verticies, %d faces, and %d materials>' % (
- len(self._verts), self._nface, self._nmate)
+ len(self._verts), len(self._faces), self._nmate)
property faces :
@@ -38,7 +38,7 @@
This is a list-like object for manipulating the faces of a Mesh.
'''
def __get__(self) :
- return soy._datatypes.FaceList(self)
+ return self._faces
property verts :
@@ -122,68 +122,30 @@
self._verts._renderArray()
for i from 0 <= i < self._nmate :
(<soy.materials.Material> self._mates[i].mat)._bind()
- gl.glDrawElements (gl.GL_TRIANGLES, self._mates[i].length*3,
- gl.GL_UNSIGNED_SHORT,
- self._faces + self._mates[i].offset)
+ self._faces._renderArray(self._mates[i].offset, self._mates[i].length)
(<soy.materials.Material> self._mates[i].mat)._unbind()
cdef void _renderVBO(self) :
cdef int i
- if self._nface == 0 :
+ if self._faces._arraySize == 0 :
return
- if self._bface == 0 :
+ if self._faces._buffer == 0 :
self._createVBO()
- gl.glBindBufferARB (gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._bface)
- self._sendFaceVBO()
+ gl.glBindBufferARB (gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._faces._buffer)
+ self._faces._sendUpdated()
self._verts._renderBuffer()
for i from 0 <= i < self._nmate :
(<soy.materials.Material> self._mates[i].mat)._bind()
- gl.glDrawElements (gl.GL_TRIANGLES, self._mates[i].length*3,
- gl.GL_UNSIGNED_SHORT,
- (<Face *> 0) + self._mates[i].offset)
+ self._faces._renderBuffer(self._mates[i].offset, self._mates[i].length)
(<soy.materials.Material> self._mates[i].mat)._unbind()
cdef void _createVBO(self) :
- self._aface = self._mface
- self._uface.offset = -1
- gl.glGenBuffersARB(1, &self._bface)
- gl.glBindBufferARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, self._bface)
- gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._aface,
- self._faces, gl.GL_STATIC_DRAW_ARB)
+ self._faces._createBuffer()
self._verts._createBuffer()
- cdef void _flagFaceVBO(self, int index) :
- if index < self._uface.offset or self._uface.offset == -1 :
- self._uface.offset = index
- if index-self._uface.offset > self._uface.length :
- self._uface.length = index-self._uface.offset
-
-
- cdef void _sendFaceVBO(self) :
- if self._uface.offset == -1 :
- return
- if self._uface.offset + self._uface.length > self._aface :
- self._aface = self._mface
- self._cface.lock()
- gl.glBufferDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB, 6*self._mface,
- self._faces, gl.GL_STATIC_DRAW_ARB)
- self._cface.unlock()
- return
- # If in the process of writing, wait until next cycle to send
- if not self._cface.trylock() :
- return
- gl.glBufferSubDataARB(gl.GL_ELEMENT_ARRAY_BUFFER_ARB,
- 6*self._uface.offset,
- 6*(self._uface.length+1),
- &self._faces[self._uface.offset])
- self._uface.offset = -1
- self._uface.length = 0
- self._cface.unlock()
-
-
cdef void *_alloc(self, int num, int* m, void* store, int size) :
if num == 0 :
m[0] = 0
@@ -198,11 +160,6 @@
return store
- cdef void _allocFaces(self, int num) :
- self._faces = <Face *> self._alloc(num, &self._mface,
- self._faces, sizeof(Face))
-
-
cdef void _allocMates(self, int num) :
self._mates = <MatRange *> self._alloc(num, &self._mmate,
self._mates, sizeof(MatRange))
@@ -211,10 +168,9 @@
cdef class Pyramid(Mesh) :
'''This is for testing only'''
def __new__(self, object scene=None, object tex=None, *args, **keywords) :
+ cdef object a, b, c, d, e
self._allocMates(3)
- self._allocFaces(6)
self._nmate = 3
- self._nface = 6
import soy.colors
self.mat0 = soy.materials.Material(ambient=soy.colors.BlueViolet(),
diffuse=soy.colors.Cyan())
@@ -232,37 +188,19 @@
self._mates[2].offset = 4
self._mates[2].length = 2
- self._faces[0].a = 0
- self._faces[0].b = 1
- self._faces[0].c = 2
+ a = soy.atoms.Vertex(self,position=( 0, 1, 0), texcoord=(0,0,0))
+ b = soy.atoms.Vertex(self,position=(-1,-1, 1), texcoord=(0,0,0))
+ c = soy.atoms.Vertex(self,position=( 1,-1, 1), texcoord=(0,1,0))
+ d = soy.atoms.Vertex(self,position=( 1,-1,-1), texcoord=(1,1,0))
+ e = soy.atoms.Vertex(self,position=(-1,-1,-1), texcoord=(1,0,0))
- self._faces[1].a = 0
- self._faces[1].b = 3
- self._faces[1].c = 4
+ soy.atoms.Face(self, verts=(a,b,c))
+ soy.atoms.Face(self, verts=(a,d,e))
+ soy.atoms.Face(self, verts=(a,c,d))
+ soy.atoms.Face(self, verts=(a,e,b))
+ soy.atoms.Face(self, verts=(d,c,b))
+ soy.atoms.Face(self, verts=(e,d,b))
- self._faces[2].a = 0
- self._faces[2].b = 2
- self._faces[2].c = 3
- self._faces[3].a = 0
- self._faces[3].b = 4
- self._faces[3].c = 1
-
- self._faces[4].a = 3
- self._faces[4].b = 2
- self._faces[4].c = 1
-
- self._faces[5].a = 4
- self._faces[5].b = 3
- self._faces[5].c = 1
-
- soy.atoms.Vertex(self,position=(0,1,0), normal=(0,1,0), texcoord=(0,0,0))
- soy.atoms.Vertex(self,position=(-1,-1,1),normal=(-1,-1,1),texcoord=(0,0,0))
- soy.atoms.Vertex(self,position=(1,-1,1), normal=(1,-1,1), texcoord=(0,1,0))
- soy.atoms.Vertex(self,position=(1,-1,-1),normal=(1,-1,-1),texcoord=(1,1,0))
-
soy.atoms.Vertex(self,position=(-1,-1,-1),normal=(0,-1,0),texcoord=(1,0,0))
-
-
def __dealloc__(self) :
- self._allocFaces(0)
self._allocMates(0)
Modified: trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd
===================================================================
--- trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2007-07-08
09:37:55 UTC (rev 421)
+++ trunk/pysoy/src/bodies._bodies/soy.bodies._bodies.pxd 2007-07-08
11:40:24 UTC (rev 422)
@@ -69,17 +69,7 @@
cdef class Mesh (Body) :
- #
- # Face Data
- cdef int _aface # Allocated buffer size
- cdef gl.GLuint _bface # element array Buffer
- cdef soy._internals.Children _cface # "Face" Children
- cdef Range _uface # Updated vertex array
- cdef unsigned int _nface # number of current _faces
- cdef int _mface # malloc size of _faces
- cdef Face *_faces # indices for each face
- #
- # Vertex Data
+ cdef soy._datatypes.FaceList _faces
cdef soy._datatypes.VertexList _verts
#
# Texture Data
@@ -92,10 +82,7 @@
cdef void _renderVA (self)
cdef void _renderVBO (self)
cdef void _createVBO (self)
- cdef void _flagFaceVBO (self, int)
- cdef void _sendFaceVBO (self)
cdef void *_alloc (self, int, int*, void*, int)
- cdef void _allocFaces (self, int)
cdef void _allocMates (self, int)
cdef class Pyramid (Mesh) :
_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn