Changeset 382
- Timestamp:
- 12/04/02 19:04:59 (6 years ago)
- Files:
-
- trunk/RBRapier/RBRapier/Renderer/DisplayList.py (modified) (1 diff)
- trunk/RBRapier/RBRapier/Renderer/Geometry/ArrayTraversal.py (modified) (3 diffs)
- trunk/RBRapier/RBRapier/Renderer/Geometry/NumericVertexArray.c (added)
- trunk/RBRapier/RBRapier/Renderer/Geometry/VertexArrays.py (modified) (7 diffs)
- trunk/RBRapier/RBRapier/Renderer/Geometry/_nvaSetup.py (added)
- trunk/RBRapier/demo/Lightwave/scene.py (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBRapier/RBRapier/Renderer/DisplayList.py
r340 r382 47 47 if self.__RecreateCache: 48 48 if __debug__: 49 print "Caching %r..." % self.__ CachedObj,49 print "Caching %r..." % self.__class__.__name__, 50 50 StartTime = time.clock() 51 51 if self.__ListId is None: trunk/RBRapier/RBRapier/Renderer/Geometry/ArrayTraversal.py
r378 r382 66 66 67 67 def GenerateStatistics(self, context): 68 for StatName, StatResults in self._StatsData.iteritems(): 69 try: 70 context.Statistics[StatName] += StatResults 71 except KeyError: 72 context.Statistics[StatName] = StatResults 68 if context.Statistics: 69 for StatName, StatResults in self._StatsData.iteritems(): 70 try: context.Statistics[StatName] += StatResults 71 except KeyError: context.Statistics[StatName] = StatResults 73 72 74 73 class RangedTraversal(object): … … 91 90 StatName, StatCalc = _PrimitveStatsMap[self.primitive] 92 91 StatResults = 0 93 for RangeStart, RangeEnd in self. datacollection:92 for RangeStart, RangeEnd in self.rangecollection: 94 93 StatResults += StatCalc(RangeEnd - RangeStart) 95 self._StatsData = {StatName:StatResults, _ReversePrimitveMap[self.primitive]: len(self. datacollection)}94 self._StatsData = {StatName:StatResults, _ReversePrimitveMap[self.primitive]: len(self.rangecollection)} 96 95 97 96 GenerateStatistics = GenerateStatistics … … 170 169 def Execute(self, context): 171 170 primitive = self.primitive 171 _glDrawElements = self._glDrawElements 172 172 for color, data in zip(self.colors, self.datacollection): 173 173 GL.glColor3f(*color) 174 self._glDrawElements(primitive, data)174 _glDrawElements(primitive, data) 175 175 176 176 self.GenerateStatistics(context) trunk/RBRapier/RBRapier/Renderer/Geometry/VertexArrays.py
r378 r382 56 56 57 57 def Select(self, context): 58 context.ClientStateMgr.Enable(self._glArrayType) 58 59 self._glArrayPointer(self.data) 59 context.ClientStateMgr.Enable(self._glArrayType)60 60 61 61 def Deselect(self, context): … … 70 70 71 71 _glArrayType = GL.GL_VERTEX_ARRAY 72 _glArrayPtrType = GL.GL_VERTEX_ARRAY_POINTER 72 73 _glArrayPointers = { 73 74 Numeric.Int8: GL.glVertexPointerb, … … 78 79 } 79 80 80 class ColorArray(ArrayBase):81 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~82 #~ Constants / Variables / Etc.83 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~84 85 _glArrayType = GL.GL_COLOR_ARRAY86 _glArrayPointers = {87 Numeric.Int8: GL.glColorPointerb,88 Numeric.UInt8: GL.glColorPointerub,89 Numeric.Int16: GL.glColorPointers,90 Numeric.UInt16: GL.glColorPointerus,91 Numeric.Int32: GL.glColorPointeri,92 Numeric.UInt32: GL.glColorPointerui,93 Numeric.Float32: GL.glColorPointerf,94 Numeric.Float64: GL.glColorPointerd,95 }96 97 81 class NormalArray(ArrayBase): 98 82 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 101 85 102 86 _glArrayType = GL.GL_NORMAL_ARRAY 87 _glArrayPtrType = GL.GL_NORMAL_ARRAY_POINTER 103 88 _glArrayPointers = { 104 89 Numeric.Int8: GL.glNormalPointerb, … … 115 100 116 101 _glArrayType = GL.GL_TEXTURE_COORD_ARRAY 102 _glArrayPtrType = None 117 103 _glArrayPointers = { 118 104 Numeric.Int8: GL.glTexCoordPointerb, … … 121 107 Numeric.Float32: GL.glTexCoordPointerf, 122 108 Numeric.Float64: GL.glTexCoordPointerd, 109 } 110 111 class ColorArray(ArrayBase): 112 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 #~ Constants / Variables / Etc. 114 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 115 116 _glArrayType = GL.GL_COLOR_ARRAY 117 _glArrayPtrType = GL.GL_COLOR_ARRAY_POINTER 118 _glArrayPointers = { 119 Numeric.Int8: GL.glColorPointerb, 120 Numeric.UInt8: GL.glColorPointerub, 121 Numeric.Int16: GL.glColorPointers, 122 Numeric.UInt16: GL.glColorPointerus, 123 Numeric.Int32: GL.glColorPointeri, 124 Numeric.UInt32: GL.glColorPointerui, 125 Numeric.Float32: GL.glColorPointerf, 126 Numeric.Float64: GL.glColorPointerd, 123 127 } 124 128 … … 130 134 _DefaultFormat = Numeric.UInt8 131 135 _glArrayType = GL.GL_EDGE_FLAG_ARRAY 136 _glArrayPtrType = None 132 137 _glArrayPointers = { 133 138 Numeric.UInt8: GL.glEdgeFlagPointer, trunk/RBRapier/demo/Lightwave/scene.py
r379 r382 67 67 self.DepthTest = FragmentTests.DepthTest() 68 68 self.Sequence.AddSetupElement(self.DepthTest.Select) 69 #self.Normalization = TransformationSettings.Normalization()70 #self.Sequence.AddSetupElement(self.Normalization.Select)69 self.Normalization = TransformationSettings.Normalization() 70 self.Sequence.AddSetupElement(self.Normalization.Select) 71 71 self.Culling = PolygonRasterization.FaceCulling() 72 72 self.Sequence.AddSetupElement(self.Culling.Select) … … 75 75 self.Lighting.Active = 1 76 76 self.Sequence.AddElement(self.Lighting.Select) 77 77 78 self.Lights = [] 78 self.Lights.append(Lighting. SpotLight(0, SpotCutoff=10., SpotExponent=16.))79 self.Lights.append(Lighting.Light(0)) 79 80 self.Lights[0].Active = 1 80 self.Lights[0].Position = (0., .4, 0., 1.)81 self.Lights[0].SpotDirection = (0., -1., 0., 0.)82 81 self.Lights.append(Lighting.Light(1)) 83 82 self.Lights[1].Active = 1 … … 88 87 self.Lights[2].Specular = 0., 0., 1. 89 88 self.Lights[2].Diffuse = .6, .6, .6 89 self.Lights.append(Lighting.SpotLight(3, SpotCutoff=10., SpotExponent=16.)) 90 self.Lights[3].Active = 1 91 self.Lights[3].Position = (0., .4, 0., 1.) 92 self.Lights[3].SpotDirection = (0., -1., 0., 0.) 90 93 91 94 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 105 108 106 109 self.Sequence.AddElement(self.Lights[0].Select) 110 self.Sequence.AddElement(self.Lights[3].Select) 107 111 108 112 self.ModelView = Transformations.ManagedComposite() … … 124 128 self.Sequence.AddElement(self.LightXForm.Deselect) 125 129 126 self.Grid = Grids.TextureGrid(GridExtent=1, TextureExtent=10)127 try: self.Grid.LoadGridTexture('coolgrid.png')128 except IOError: pass129 self.Sequence.AddElement(self.Grid)130 #self.Grid = Grids.TextureGrid(GridExtent=1, TextureExtent=10) 131 #try: self.Grid.LoadGridTexture('coolgrid.png') 132 #except IOError: pass 133 #self.Sequence.AddElement(self.Grid) 130 134 131 135 #self.Sequence.AddElement(AxisSets.AxisLineSet()) … … 133 137 args = 1,3 134 138 #self.GeoObj = self.LigthwaveLWO('data/RBText.lwo', *args) 135 self.GeoObj = self.LigthwaveLWO('data/dodecahedron.lwo', *args)136 #self.GeoObj = self.LigthwaveLWO('data/ki162a.lwo', *args)139 #self.GeoObj = self.LigthwaveLWO('data/dodecahedron.lwo', *args) 140 self.GeoObj = self.LigthwaveLWO('data/ki162a.lwo', *args) 137 141 #self.GeoObj = self.LigthwaveLWO('data/fi110a.lwo', *args) 138 142 #self.GeoObj = self.LigthwaveLWO('data/ga102a.lwo', *args) … … 140 144 #self.GeoObj = self.LigthwaveLWO('data/SIM.LWO', *args) 141 145 146 #self.DLOptimize(self.GeoObj) 142 147 #self.Sequence.AddElements(self.GeoObj.Vertices.Select, self.GeoObj.Normals.Select) 143 self.Sequence.AddElement(self.GeoObj) 148 for x in xrange(1): 149 self.Sequence.AddElement(self.GeoObj.Execute) 150 #print "BoundingBox", self.GeoObj.BoundingBox 144 151 145 152 def StripColoredLigthwaveLWO(self, name, *args, **kw): … … 149 156 builder.IndexedTraversal = ArrayTraversal.ColoredIndexedCollectionTraversal 150 157 GeoObj = builder.Build(open(name, 'rb'), *args, **kw) 151 #self.Sequence.AddElement(GeoObj)152 158 return GeoObj 153 159 … … 156 162 builder.GeoObjectFactory = GeoObject.DefaultGeoObject 157 163 GeoObj = builder.Build(open(name, 'rb'), *args, **kw) 158 #self.Sequence.AddElement(GeoObj)159 164 return GeoObj 165 166 def DLOptimize(self, obj): 167 from RBRapier.Renderer.DisplayList import DisplayList 168 DisplayList.InsertAspect(obj) 160 169 161 170 Animate = 1 … … 169 178 if self.Animate: 170 179 self.ModelView.Rotate.Angle = Numeric.fmod(self.ModelView.Rotate.Angle + self.ModelView.Rotate.AngleDelta, 360.) 171 self.LightXForm.Rotate.Angle = Numeric.fmod(self.LightXForm.Rotate.Angle + self.LightXForm.Rotate.AngleDelta, 360.)180 #self.LightXForm.Rotate.Angle = Numeric.fmod(self.LightXForm.Rotate.Angle + self.LightXForm.Rotate.AngleDelta, 360.)
