I’m currently reprogramming an old computer game called ultima online. I’m trying to setup the map an the static data, but i have some serious problems with performance.
The game is split into quads 44x44 pixel.
There is my first question:
I use a VBO to push all my vertexdata(pos * 3, color * 4, tex * 2) into the graphic memory. Now i can render easily with
glDrawArrays(GL_QUADS,0,x); //x is the count of quads
BUT: QUADS are deprecated reffering to this post: link would it be faster to set up index data and render triangles?
Further more i use sometimes alot of textures (~200) per frame (it is not possible to use less, because i already render with ZBuffer and bind every texture just once) Is there any performance hint you can give me?
This are 2 important questions and i hope some of you can help a beginner in opengl!
Can you be more precise ? milliseconds per frame ? your computer and video card specs ? viewport size ?
Quads are only deprecated from GL 3.x so you don’t need to worry too much about deprecation.
would it be faster to set up index data and render triangles?
No.
200 textures is quite a lot, switching textures has a cost. sounds like you can put all your texture ona single one, with carefull texture coordinates : this is called a “texture atlas”.
EDIT: and make sure you just rebind textures, and NOT reupload them at each frame (ie. glTexImage2D only called once per texture during the whole life of the program)
1.3 ms ? come back when you are at 130 ms per frame
You have to understand that performance is never completely linear to one criterion. Maybe the limiting factor is number of pixel to render, or number of calls, or number of triangles, or maybe number of textures, or other things…
Out of curiosity, do you have any reasons to use lwjgl, instead of jogl ?
Probably not much, but jogl became standard for jdk 1.5 or 1.6 so it might help for the deployment.
I don’t have a lot of experience with either lwjgl or jogl, so I was just asking.