Chris Lux
2003-05-26, 06:07:32
hi, nochmal ;)
ich habe mal einen einfachen test gehackt um vbo zu testen. ich rendere nur ein riesen quadrat (mit variabler dimension was die triangulierung angeht). wenn ich vbos benutzte bekomme ich ca 42,5mio Dreiecke pro sekunde. nutze ich keine vbos bekomme ich immer noch 39mio Dreiecke pro sekunde. sollten vbos nicht einen richtigen schub bringen was dies angeht oder sind meine daten nicht realistisch?
für die testzwecke habe ich ein 500x500 Gitter von vertices als triangle strip benutzt (als einen generalisierten tristrip) was in ca. 500*500*2 Dreiecken resultiert. wie man unten sieht schicke ich nur vertexpositionen an die grafikkarte, im vs gebe ich die position noch als farbe weiter an die fs (nur damit ich was sehe ;)).
#ifdef USE_VBO
glBindBufferARB(GL_ARRAY_BUFFER_ARB, gBufferID);
glVertexPointer(3, GL_FLOAT, 0, (char*)NULL +vertOff);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, gEBufferID);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, gEBufferCount, GL_UNSIGNED_INT, (char*)NULL + inOff);
glDisableClientState(GL_VERTEX_ARRAY);
#else
glVertexPointer(3, GL_FLOAT, 0, gBuffer);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, gEBufferCount, GL_UNSIGNED_INT, gEBuffer);
glDisableClientState(GL_VERTEX_ARRAY);
#endif
edit:
ich nutze eine gf4 ti4600, mit den det44.03. und die buffer wurden mit GL_STATIC_DRAW_ARB angelegt um wirklich maximale performance zu testen.
edit2:
wenn ich nur ein 100x100 gitter benutze steigt der unterschied von 27mio zu 47mio Dreiecken. ok ;) das macht mich jetzt stutzig...
ich habe mal einen einfachen test gehackt um vbo zu testen. ich rendere nur ein riesen quadrat (mit variabler dimension was die triangulierung angeht). wenn ich vbos benutzte bekomme ich ca 42,5mio Dreiecke pro sekunde. nutze ich keine vbos bekomme ich immer noch 39mio Dreiecke pro sekunde. sollten vbos nicht einen richtigen schub bringen was dies angeht oder sind meine daten nicht realistisch?
für die testzwecke habe ich ein 500x500 Gitter von vertices als triangle strip benutzt (als einen generalisierten tristrip) was in ca. 500*500*2 Dreiecken resultiert. wie man unten sieht schicke ich nur vertexpositionen an die grafikkarte, im vs gebe ich die position noch als farbe weiter an die fs (nur damit ich was sehe ;)).
#ifdef USE_VBO
glBindBufferARB(GL_ARRAY_BUFFER_ARB, gBufferID);
glVertexPointer(3, GL_FLOAT, 0, (char*)NULL +vertOff);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, gEBufferID);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, gEBufferCount, GL_UNSIGNED_INT, (char*)NULL + inOff);
glDisableClientState(GL_VERTEX_ARRAY);
#else
glVertexPointer(3, GL_FLOAT, 0, gBuffer);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, gEBufferCount, GL_UNSIGNED_INT, gEBuffer);
glDisableClientState(GL_VERTEX_ARRAY);
#endif
edit:
ich nutze eine gf4 ti4600, mit den det44.03. und die buffer wurden mit GL_STATIC_DRAW_ARB angelegt um wirklich maximale performance zu testen.
edit2:
wenn ich nur ein 100x100 gitter benutze steigt der unterschied von 27mio zu 47mio Dreiecken. ok ;) das macht mich jetzt stutzig...