Hey everyone, i am rendering 62500 triangles on screen, using indexed triangle strips, and I get 9 fps. I have a p4 1.6ghz, 256 mb SDRAM, with GFORCE3, 64mb. Out of 256mb of ram, 167 were used for other task.
Is this good performance, or bad?I also transform is once, totate it 2 times, and transform it again… if this matters.
EDIT: I dont use any LOD, or quad trees, ocTrees, or any means of optimisation… besides using indexed triangle strips…
EDIT2: I render it in wireframe mode, it gives me 9 fps, if i render it in fill mode, it gives me 21 fps.
21 fps seems a bit low but I suppose it could be right.
directed at the forum:
I’ve noticed that behavior as well (wireframe taking longer to render than filled polygons)
Isn’t this less work than filling the polygons?
what’s going on with that?
well, yes it seems to be, but since i dont know what openGL does to render wireframe, i cant really tell But im interested in this question as well. If i render using gl_point mode, then i get 11 fps. This seems to be rather sad to me, but there are always methods for optimisation, no?
I mean mabe wireframe, it might be a lot, due to building full triangles and stuff, fine, but POINTS?!
I am not familier with ATI, but with NVIDIA which you have, you generally only get hardware accelerated lines on the Quadro line of boards, which are targeted at workstations (and cost $$).
There used to be hacks you could do to get HW lines on GeForce boards, don’t know if this is still possible.
Since you’re sending the same amount of geometry in both wireframe and polygon mode, the bottleneck is not at the vertex unit level.
So it should have something to do with the fill rate. Is it possible that, because you can see through the holes of wireframes, that early Z-culling nearly always fails?
well, i tried rendering without occlusion, and i was including backfaces, and it gave the same rate during the fill mode in both cases (with and without backfaces). For some reason i am trying to change the fill mode to wireframe mode to check if the backface culling makes any difference, but i messed it up and have a bug, so i cant change/test it.
What i am still interested in, is wether the result i got in the first post good enough to continue?
EDIT: Fixed the bug (spelling mistake, compiler doesnt notice the difference between GL_LINE and GL_LINES. Correct one is without ‘S’)
The backface occlusion makes absolutely NO difference.
I adapted some old code of mine to draw a 512 by 512 heightmap in wireframe mode instead of filled mode.
I got 500-600 FPS using vertex buffer objects with indexed line strips in a 512 by 512 window, backface culling doesn’t seem to make a difference.
FYI I’m running a 2.8Ghz P4, Ati Radeon 9800XT
Line rendering may be slower because some implementations drawn them as thin quads. So for each triangle, it means 3 quads.
To further test, change the size of the window, and see if it affect framerate. I would say lines are transform limited.
Why would openGL draw a line as a quad?! i mean, bottom line, they could do a line with a triangle, no?
By setting the linewidth to a value greater than 1, the lines are stretched along the Y-axis or X-axis, depending on the slope of the line (providing you didn’t set the line smooth hint). The results are the same as if quads were used to draw the lines.
Well, my line width is 1, so there’s no reason for OpenGL to be doing that.
rendering a line with a width of 1 pixel using polygons seems…well…stupid.
Thanx for clearing it up. How would I change the line width? Is the same possible with point diameter if i render using GL_POINT?
Thank you, this will help me a lot. But can still someone answer me if my rendering performance is efficient?
Thank you a lot, i learnd so much from this post.
EDIT!!!: There was a mistake, I was getting 21 fps while not rendering 62500 triangles, but basically 2 times the amount - 124002. I was dumb enough not to do some simple math right.
Sorry about that!