Changeset 383

Show
Ignore:
Timestamp:
12/05/02 12:07:15 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBRapier/RBRapier/Renderer/Geometry/ArrayTraversal.py

    r382 r383  
    2626from OpenGL import GL 
    2727import Numeric 
     28import NumericVertexArray 
    2829from Foundation.AspectOriented import Aspect 
    2930 
     
    114115    _PrimitiveCount = 0 
    115116    _DefaultFormat = Numeric.UInt16 
    116     _glDrawElementsCall = { 
    117         Numeric.UInt8: GL.glDrawElementsub, 
    118         Numeric.UInt16: GL.glDrawElementsus, 
    119         Numeric.UInt32: GL.glDrawElementsui, 
    120         } 
    121117 
    122118    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    135131        self._StatsData = {StatName:StatResults, _ReversePrimitveMap[self.primitive]: len(self.datacollection)} 
    136132 
    137         self._glDrawElements = self._glDrawElementsCall[format]  
    138  
    139133    GenerateStatistics = GenerateStatistics 
    140134 
    141135    def Execute(self, context): 
    142136        primitive = self.primitive 
     137        DrawElements = NumericVertexArray.DrawElementsArray 
    143138        for data in self.datacollection: 
    144             self._glDrawElements(primitive, data) 
     139            DrawElements(primitive, data) 
    145140 
    146141        self.GenerateStatistics(context) 
     
    169164    def Execute(self, context): 
    170165        primitive = self.primitive 
    171         _glDrawElements = self._glDrawElements 
     166        _glDrawElements = NumericVertexArray.DrawElementsArray 
    172167        for color, data in zip(self.colors, self.datacollection): 
    173168            GL.glColor3f(*color) 
  • trunk/RBRapier/RBRapier/Renderer/Geometry/NumericVertexArray.c

    r382 r383  
    3939#include <math.h> 
    4040#include <GL/gl.h> 
     41#include <GL/glu.h> 
     42 
     43/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
     44/*~ Constants and Variables                           */ 
     45/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
     46 
     47static GLenum GLTypeFromNumericType[] = {  
     48    GL_UNSIGNED_BYTE,   /* 0 -- Numerc.Character */ 
     49    GL_UNSIGNED_BYTE,   /* 1 -- Numerc.UnsignedInt8 */ 
     50    GL_BYTE,            /* 2 -- Numerc.Int8 */  
     51    GL_SHORT,           /* 3 -- Numerc.Int16 */ 
     52    GL_UNSIGNED_SHORT,  /* 4 -- Numerc.UnsignedInt16 */ 
     53    GL_INT,             /* 5 -- Numerc.Int32  */ 
     54    GL_UNSIGNED_INT,    /* 6 -- Numerc.UnsignedInt32 */ 
     55    GL_FALSE,           /* 7 -- unknown */ 
     56    GL_FLOAT,           /* 8 -- Numerc.Float32 */ 
     57    GL_DOUBLE,          /* 9 -- Numerc.Float64 */ 
     58    GL_FALSE,           /* 10 -- Numerc.Complex32 */ 
     59    GL_FALSE,           /* 11 -- Numerc.Complex64 */ 
     60 
     61    GL_FALSE,           /* 12 -- unknown */ 
     62    GL_FALSE,           /* 13 -- unknown */ 
     63    GL_FALSE,           /* 14 -- unknown */ 
     64    GL_FALSE,           /* 15 -- unknown */ 
     65    }; 
     66 
     67static PyObject *nvaError = NULL; 
     68static PyObject *nvaGLError = NULL; 
    4169 
    4270/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
     
    4472/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
    4573 
    46 #define ASSURE(E,M) if(!(E)) return ErrorReturn(M) 
    47  
    48 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
    49 /*~ Constants and Variables                           */ 
    50 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
    51  
    52 static GLenum GLTypeFromNumericType[] = {  
    53     GL_FALSE, GL_UNSIGNED_BYTE, GL_BYTE, GL_SHORT, GL_INT, GL_FALSE,  
    54     GL_FLOAT, GL_DOUBLE, GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE }; 
    55  
    56 static PyObject *nvaError = NULL; 
     74#define ASSURE(E,M) if(!(E)) return ErrorReturn(&nvaError, M) 
     75#define GLASSURE(E,M) if(!(E)) return ErrorReturn(&nvaGLError, M) 
    5776 
    5877/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
     
    6079/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
    6180 
    62 static PyObject *ErrorReturn(char *message) 
    63 { 
    64     PyErr_SetString(nvaError, message); 
     81static PyObject *ErrorReturn(PyObject** Error, const char *message) 
     82{ 
     83    PyErr_SetString(*Error, message); 
    6584    return NULL; 
    6685} 
     
    7089    GLint size = 0; 
    7190    GLenum type = GL_FLOAT; 
     91    GLenum _glerr = GL_NO_ERROR; 
    7292    PyObject *objptr = NULL; 
    7393    PyArrayObject *arrayptr = NULL; 
     
    90110    } 
    91111 
     112    GLASSURE((_glerr = glGetError()) == GL_NO_ERROR, gluErrorString(_glerr)); 
     113 
    92114    Py_INCREF(Py_None); 
    93115    return Py_None; 
     
    98120    GLint size = 0; 
    99121    GLenum type = GL_FLOAT; 
    100     PyObject *objptr = NULL; 
    101     PyArrayObject *arrayptr = NULL; 
    102  
    103     if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
    104  
    105     if (objptr == Py_None) { 
    106         glVertexPointer(0, 0, 0, NULL); 
     122    GLenum _glerr = GL_NO_ERROR; 
     123    PyObject *objptr = NULL; 
     124    PyArrayObject *arrayptr = NULL; 
     125 
     126    if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
     127 
     128    if (objptr == Py_None) { 
     129        glColorPointer(0, 0, 0, NULL); 
    107130    } else { 
    108131        ASSURE(PyArray_Check(objptr), "NumericVertexArray assumes a Numeric array object"); 
     
    118141    } 
    119142 
     143    GLASSURE((_glerr = glGetError()) == GL_NO_ERROR, gluErrorString(_glerr)); 
     144 
    120145    Py_INCREF(Py_None); 
    121146    return Py_None; 
     
    126151    GLint size = 0; 
    127152    GLenum type = GL_FLOAT; 
    128     PyObject *objptr = NULL; 
    129     PyArrayObject *arrayptr = NULL; 
    130  
    131     if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
    132  
    133     if (objptr == Py_None) { 
    134         glVertexPointer(0, 0, 0, NULL); 
     153    GLenum _glerr = GL_NO_ERROR; 
     154    PyObject *objptr = NULL; 
     155    PyArrayObject *arrayptr = NULL; 
     156 
     157    if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
     158 
     159    if (objptr == Py_None) { 
     160        glNormalPointer(0, 0, NULL); 
    135161    } else { 
    136162        ASSURE(PyArray_Check(objptr), "NumericVertexArray assumes a Numeric array object"); 
     
    146172    } 
    147173 
     174    GLASSURE((_glerr = glGetError()) == GL_NO_ERROR, gluErrorString(_glerr)); 
     175 
    148176    Py_INCREF(Py_None); 
    149177    return Py_None; 
     
    154182    GLint size = 0; 
    155183    GLenum type = GL_FLOAT; 
    156     PyObject *objptr = NULL; 
    157     PyArrayObject *arrayptr = NULL; 
    158  
    159     if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
    160  
    161     if (objptr == Py_None) { 
    162         glVertexPointer(0, 0, 0, NULL); 
     184    GLenum _glerr = GL_NO_ERROR; 
     185    PyObject *objptr = NULL; 
     186    PyArrayObject *arrayptr = NULL; 
     187 
     188    if (!PyArg_ParseTuple(args, "O", &objptr)) return NULL; 
     189 
     190    if (objptr == Py_None) { 
     191        glTexCoordPointer(0, 0, 0, NULL); 
    163192    } else { 
    164193        ASSURE(PyArray_Check(objptr), "NumericVertexArray assumes a Numeric array object"); 
     
    173202        glTexCoordPointer(size, type, 0, arrayptr->data); 
    174203    } 
     204 
     205    GLASSURE((_glerr = glGetError()) == GL_NO_ERROR, gluErrorString(_glerr)); 
    175206 
    176207    Py_INCREF(Py_None); 
     
    183214    GLint count = 0; 
    184215    GLenum type = GL_UNSIGNED_INT; 
     216    GLenum _glerr = GL_NO_ERROR; 
    185217    PyObject *objptr = NULL; 
    186218    PyArrayObject *arrayptr = NULL; 
     
    196228 
    197229    glDrawElements(mode, count, type, arrayptr->data); 
     230 
     231    GLASSURE((_glerr = glGetError()) == GL_NO_ERROR, gluErrorString(_glerr)); 
    198232 
    199233    Py_INCREF(Py_None); 
     
    245279 
    246280    /* Set error to empty, and allow access from python */ 
    247     nvaError = Py_BuildValue("s", ""); 
    248     PyDict_SetItemString(dict, "error", nvaError); 
     281    nvaError = PyErr_NewException("NumericVertexArray.UsageError", PyExc_EnvironmentError, NULL); 
     282        nvaGLError = PyErr_NewException("NumericVertexArray.GLerror", PyExc_EnvironmentError, NULL); 
     283 
     284    PyDict_SetItemString(dict, "UsageError", nvaError); 
     285    PyDict_SetItemString(dict, "GLerror", nvaGLError); 
    249286 
    250287    /* Set the docstring */ 
  • trunk/RBRapier/RBRapier/Renderer/Geometry/VertexArrays.py

    r382 r383  
    2626import Numeric 
    2727from OpenGL import GL 
     28import NumericVertexArray 
    2829 
    2930#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    5354        if format is None: format = self._DefaultFormat 
    5455        self.data = Numeric.asarray(data, format) 
    55         self._glArrayPointer = self._glArrayPointers[format] 
    5656 
    5757    def Select(self, context): 
    5858        context.ClientStateMgr.Enable(self._glArrayType) 
    59         self._glArrayPointer(self.data) 
     59        self._glArrayCall(self.data) 
    6060 
    6161    def Deselect(self, context): 
     
    7070 
    7171    _glArrayType = GL.GL_VERTEX_ARRAY 
    72     _glArrayPtrType = GL.GL_VERTEX_ARRAY_POINTER 
    73     _glArrayPointers = { 
    74         Numeric.Int8: GL.glVertexPointerb, 
    75         Numeric.Int16: GL.glVertexPointers, 
    76         Numeric.Int32: GL.glVertexPointeri, 
    77         Numeric.Float32: GL.glVertexPointerf, 
    78         Numeric.Float64: GL.glVertexPointerd, 
    79         } 
     72    _glArrayCall = NumericVertexArray.VertexArray 
    8073 
    8174class NormalArray(ArrayBase): 
     
    8578 
    8679    _glArrayType = GL.GL_NORMAL_ARRAY 
    87     _glArrayPtrType = GL.GL_NORMAL_ARRAY_POINTER 
    88     _glArrayPointers = { 
    89         Numeric.Int8: GL.glNormalPointerb, 
    90         Numeric.Int16: GL.glNormalPointers, 
    91         Numeric.Int32: GL.glNormalPointeri, 
    92         Numeric.Float32: GL.glNormalPointerf, 
    93         Numeric.Float64: GL.glNormalPointerd, 
    94         } 
     80    _glArrayCall = NumericVertexArray.NormalArray 
    9581 
    9682class TexCoordArray(ArrayBase): 
     
    10086 
    10187    _glArrayType = GL.GL_TEXTURE_COORD_ARRAY 
    102     _glArrayPtrType = None 
    103     _glArrayPointers = { 
    104         Numeric.Int8: GL.glTexCoordPointerb, 
    105         Numeric.Int16: GL.glTexCoordPointers, 
    106         Numeric.Int32: GL.glTexCoordPointeri, 
    107         Numeric.Float32: GL.glTexCoordPointerf, 
    108         Numeric.Float64: GL.glTexCoordPointerd, 
    109         } 
     88    _glArrayCall = NumericVertexArray.TexCoordArray 
    11089 
    11190class ColorArray(ArrayBase): 
     
    11594 
    11695    _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, 
    127         } 
     96    _glArrayCall = NumericVertexArray.ColorArray 
    12897 
    12998class EdgeFlagArray(ArrayBase): 
     
    134103    _DefaultFormat = Numeric.UInt8 
    135104    _glArrayType = GL.GL_EDGE_FLAG_ARRAY 
    136     _glArrayPtrType = None 
    137     _glArrayPointers = { 
    138         Numeric.UInt8: GL.glEdgeFlagPointer, 
    139         } 
     105    #_glArrayCall = NumericVertexArray.EdgeFlagArray 
    140106 
  • trunk/RBRapier/RBRapier/Renderer/Geometry/_nvaSetup.py

    r382 r383  
    3737    include_dirs=[NumericDir],  
    3838    sources=['NumericVertexArray.c'],  
    39     libraries=['OpenGL32']) 
     39    libraries=['opengl32', 'glu32']) 
    4040 
    4141setup (name='NumericVertexArray', 
  • trunk/RBRapier/demo/Lightwave/scene.py

    r382 r383  
    128128        self.Sequence.AddElement(self.LightXForm.Deselect) 
    129129 
    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        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) 
    134134 
    135135        #self.Sequence.AddElement(AxisSets.AxisLineSet()) 
    136136 
    137137        args = 1,3 
    138         #self.GeoObj = self.LigthwaveLWO('data/RBText.lwo', *args) 
     138        self.GeoObj = self.LigthwaveLWO('data/RBText.lwo', *args) 
    139139        #self.GeoObj = self.LigthwaveLWO('data/dodecahedron.lwo', *args) 
    140         self.GeoObj = self.LigthwaveLWO('data/ki162a.lwo', *args) 
     140        #self.GeoObj = self.LigthwaveLWO('data/ki162a.lwo', *args) 
    141141        #self.GeoObj = self.LigthwaveLWO('data/fi110a.lwo', *args) 
    142142        #self.GeoObj = self.LigthwaveLWO('data/ga102a.lwo', *args) 
  • trunk/RBRapier/demo/Lightwave/simple.skin

    r356 r383  
    33    <application /> 
    44 
    5     <frame title='Simple Wavefront OBJ Loader Demo' show='1' pos='0,0' size='800,600'> 
     5    <frame title='Simple Lightwave LWOB Loader Demo' show='1' pos='0,0' size='800,600'> 
    66        <layout skin:save='wxDefLayout' sizerOption='1' sizerFlag='wxEXPAND'> 
    77            <glcanvas attribList='[WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_MIN_ALPHA, 8, WX_GL_DEPTH_SIZE, 8]'>