Author: ArcRiley
Date: 2007-07-08 20:24:10 -0400 (Sun, 08 Jul 2007)
New Revision: 438
Modified:
trunk/pysoy/src/meshes/Mesh.pxi
trunk/pysoy/src/meshes/soy.meshes.pxd
Log:
more work on ticket #257
Modified: trunk/pysoy/src/meshes/Mesh.pxi
===================================================================
--- trunk/pysoy/src/meshes/Mesh.pxi 2007-07-09 00:23:27 UTC (rev 437)
+++ trunk/pysoy/src/meshes/Mesh.pxi 2007-07-09 00:24:10 UTC (rev 438)
@@ -23,6 +23,7 @@
This is a collection of triangles which may share verticies.
'''
def __new__(self, *args, **keywords) :
+ self._mates = soy._datatypes.MaterialList(self)
self._faces = soy._datatypes.FaceList(self)
self._verts = soy._datatypes.VertexList(self)
@@ -50,13 +51,13 @@
return self._verts
- property textures :
- '''Mesh.textures
+ property materials :
+ '''Mesh.materials
- This is a list-like object for manipulating the textures of a Mesh.
+ This is a list-like object for manipulating the materials of a Mesh.
'''
def __get__(self) :
- return soy._datatypes.TextureList(self)
+ return soy._mates
# Rendering Pipeline :
@@ -86,59 +87,11 @@
cdef void _render(self) :
if gl.GLEW_ARB_vertex_buffer_object :
- self._renderVBO()
+ self._mates._renderBuffer()
else :
- self._renderVA()
+ self._mates._renderArray()
- cdef void _renderVA(self) :
- cdef int i
- self._verts._renderArray()
- for i from 0 <= i < self._nmate :
- (<soy.materials.Material> self._mates[i].mat)._bind()
- 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._faces._arraySize == 0 :
- return
- if self._faces._buffer == 0 :
- self._createVBO()
- 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()
- self._faces._renderBuffer(self._mates[i].offset, self._mates[i].length)
- (<soy.materials.Material> self._mates[i].mat)._unbind()
-
-
- cdef void _createVBO(self) :
- self._faces._createBuffer()
- self._verts._createBuffer()
-
-
- cdef void *_alloc(self, int num, int* m, void* store, int size) :
- if num == 0 :
- m[0] = 0
- py.PyMem_Free(store)
- return NULL
- if m[0] == 0 :
- m[0] = num + 15
- return py.PyMem_Malloc(m[0] * size)
- if num > m[0] or num+120 < m[0] :
- m[0] = num + 15
- return py.PyMem_Realloc(store, m[0] * size)
- return store
-
-
- cdef void _allocMates(self, int num) :
- self._mates = <MatRange *> self._alloc(num, &self._mmate,
- self._mates, sizeof(MatRange))
-
-
cdef class Pyramid(Mesh) :
'''This is for testing only'''
def __new__(self, tex=None, *args, **keywords) :
@@ -152,15 +105,15 @@
diffuse=soy.colors.GoldenRod())
self.mat2 = soy.materials.Material(color=tex)
- self._mates[0].mat = <void *>self.mat0
- self._mates[1].mat = <void *>self.mat1
- self._mates[2].mat = <void *>self.mat2
- self._mates[0].offset = 0
- self._mates[0].length = 2
- self._mates[1].offset = 2
- self._mates[1].length = 2
- self._mates[2].offset = 4
- self._mates[2].length = 2
+ #self._mates[0].mat = <void *>self.mat0
+ #self._mates[1].mat = <void *>self.mat1
+ #self._mates[2].mat = <void *>self.mat2
+ #self._mates[0].offset = 0
+ #self._mates[0].length = 2
+ #self._mates[1].offset = 2
+ #self._mates[1].length = 2
+ #self._mates[2].offset = 4
+ #self._mates[2].length = 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))
Modified: trunk/pysoy/src/meshes/soy.meshes.pxd
===================================================================
--- trunk/pysoy/src/meshes/soy.meshes.pxd 2007-07-09 00:23:27 UTC (rev
437)
+++ trunk/pysoy/src/meshes/soy.meshes.pxd 2007-07-09 00:24:10 UTC (rev
438)
@@ -26,28 +26,11 @@
cimport soy.textures
-cdef struct MatRange :
- void *mat
- int offset
- int length
-
-
cdef class Mesh :
- cdef soy._datatypes.FaceList _faces
- cdef soy._datatypes.VertexList _verts
- #
- # Texture Data
- cdef unsigned int _nmate # number of
- cdef int _mmate # malloced
- cdef MatRange *_mates # material ranges
- #
- # Mesh Functions
+ cdef soy._datatypes.MaterialList _mates
+ cdef soy._datatypes.FaceList _faces
+ cdef soy._datatypes.VertexList _verts
cdef void _render (self)
- cdef void _renderVA (self)
- cdef void _renderVBO (self)
- cdef void _createVBO (self)
- cdef void *_alloc (self, int, int*, void*, int)
- cdef void _allocMates (self, int)
cdef class Pyramid (Mesh) :
_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn