   display lists vs. VBOs
  Hi,I rewrote my code from using display lists to VBOs (I made my own format and converter from 3ds) and it still runs at same fps (around 350 at MSI GeForce 6800 with an 32 low poly models (every around 700 triangles)). I'm using only WGL_EXT_swap_control and GL_ARB_vertex_buffer_object extensions. Is there any major optimization I should use (some extension or something..)? I think I have my structures quite well organized and that I should have better performance. I tried switching off some parts (2D, reflections..), but it changed only a little..   
  I think the driver generates automatically optimized VBOs when you create a Disaply List; so for static objects Display List will be at least as fast as VBOs…   ;  Maybe that's not the bottleneck?   ;Quote:Original post by smrMaybe that's not the bottleneck?sorry, I don't understand this..   ;  You're not gonna get much more performance than you are getting with VBOs, they are one of the fastest ways of drawing dynamic or static data (display lists are a little faster with static data because the draw commands are precompiled).Why do you want to improve performance above 350fps anyways?  Does your app every really need to run above 60fps?   ;Quote:Original post by CZgeniusQuote:Original post by smrMaybe that's not the bottleneck?sorry, I don't understand this..That means, that the storage of the geometry doesn't not matter for this particular case. 32*700 triangles are much too few, to get a vertex shader limitation. Better test with 32*70.000 triangles or something in that range.You might want to read this paper from ATI to learn something about optimizing your OpenGL applications.;Quote:Original post by Morpheus011You're not gonna get much more performance than you are getting with VBOs, they are one of the fastest ways of drawing dynamic or static data (display lists are a little faster with static data because the draw commands are precompiled).Why do you want to improve performance above 350fps anyways?  Does your app every really need to run above 60fps?350 is enough, but i want my app to run at slower computers and this app runs at my notebook about 10fps.. It has really bad graphic card, but with so little tris it should run at least 100..There must be some mistake in my code..here's my drawing function:void clsNOM::Draw(){glEnableClientState(GL_VERTEX_ARRAY);glEnableClientState(GL_COLOR_ARRAY);glEnableClientState(GL_NORMAL_ARRAY);if (_nep_ext_VBO_supported==1) {for (int ereje=0;ereje<numArrays;ereje++){glMaterialf( GL_FRONT, GL_SHININESS, Arrays[ereje].Shininess);glBindBufferARB(GL_ARRAY_BUFFER_ARB, Arrays[ereje].VBOVertices);glVertexPointer(3, GL_FLOAT, 0, NULL);glBindBufferARB(GL_ARRAY_BUFFER_ARB, Arrays[ereje].VBOColors);glColorPointer(4, GL_UNSIGNED_BYTE, 0, NULL);glBindBufferARB(GL_ARRAY_BUFFER_ARB, Arrays[ereje].VBONormals);glNormalPointer(GL_FLOAT, 0, NULL);if (Arrays[ereje].textured){glEnable(GL_TEXTURE_2D);glEnableClientState(GL_TEXTURE_COORD_ARRAY);glBindTexture( GL_TEXTURE_2D, Arrays[ereje].texture );glBindBufferARB(GL_ARRAY_BUFFER_ARB, Arrays[ereje].VBOCoordinates);glTexCoordPointer(2, GL_FLOAT, 0, NULL);} else {glDisableClientState(GL_TEXTURE_COORD_ARRAY);glDisable(GL_TEXTURE_2D);}glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, Arrays[ereje].VBOIndices);glDrawElements(GL_TRIANGLES, Arrays[ereje].numIndices, GL_UNSIGNED_INT, NULL);}} else if (_nep_ext_VBO_supported==0) {//...}}(one model can be separated to multiple arrays because of different texture, but for untextured models there always only one array..)typedef struct {float x;float y;float z;} CVert;typedef struct {unsigned char r;unsigned char g;unsigned char b;unsigned char a;} CColor;typedef struct {float u;float v;} CTexCoord;typedef struct {bool textured;char texturename[30];GLuint texture;int numVertices;CVert* Vertices;CVert* Normals;CColor* Colors;CTexCoord* Coordinates;int numIndices;int* Indices;float Shininess;unsigned int VBOVertices;unsigned int VBONormals;unsigned int VBOColors;unsigned int VBOCoordinates;unsigned int VBOIndices;} CArray;;  I assume you are using indexed VBO's? non-indexed ones wont be much faster than a display list. If you using indexed VBO's, then you are probably limited in some other way.   