PDA

View Full Version : Wireframe is slower then fill?



Zengar
11-23-2003, 08:47 AM
Could anyone tell me the reason why my framerate drops twice when I specify glPolygonMode(GL_FRONT_AND_BLACK, GL_LINE)? This happens both with VBO and display list, backface culling enabled.

jwatte
11-23-2003, 09:44 AM
Sounds about right. That means you're probably going vertex transfer/processing bound, although you could also be CPU memory bound.

Hardware vendors want people who do CAD and modeling to buy expensive cards, like Quadro and FireGL; they want gamers to buy comparatively cheaper cards like Radeon and GeForce. However, they can't really afford to develop two totally separate families of chips, so they develop only the high-end chips. The main difference between games and DCC apps is that in DCC, you often use wireframe mode. Then, they cut out the wireframe acceleration from the hardware they sell to consumers.

Typically, what'll happen on a consumer card is that the driver will read the triangle list and vertices, and turn that into a list of six triangles per incoming triangle, turining each edge into two triangles to draw the lines. This might mean that the driver needs to read your input data on the CPU (which is BAD if you're in AGP or VRAM) and that you suddenly see up to 6x the triangle load!

If you're already using a "DCC" card and it exhibits this behavior, then you should complain to your vendor.

PS: for the acronym challenged, DCC == Digital Content Creation.

Zengar
11-23-2003, 10:19 AM
Sound interesting... Does it also mean that drawing the lines and points is based on the same hack?

Adrian
11-23-2003, 10:45 AM
Yes I just tried it and it does seem to be slow. For wireframe I dont use polygonmode I just use glBegin(GL_LINE_STRIP) and that is fast, for me anyway.

harsman
11-23-2003, 10:51 AM
Polygon mode has to draw all edges twice which you can avoid by drawing using GL_LINES or GL_LINE_STRIP. This obviously reuires you to have some sort of edge data structure though, so it isn't as "plug and play" as polygon mode is.

azazello
11-23-2003, 11:31 AM
2Zengar
Looks like you use geforce/radeon, not a quadro/firegl.
NV/ATI slowdown drivers for game accelerators in typical "professional" modes. Try to use SoftQuadro/SoftFireGL(support not all drivers/boards) to check - may be this slowdown happend in your case .

Zengar
11-23-2003, 11:45 AM
Oh, don't take it too serious, it isn't important anyway. I was just wondering.
Thank's!

maximian
11-23-2003, 07:20 PM
Thanks for the info. I always wondered why it was so slow. Implementing by drawing the edges yourself sounds like a good idea.

knackered
11-23-2003, 11:45 PM
As far as I remember, on geforces, there is a soldering trick to fool the driver into thinking it's a quadro, and therefore giving you full wireframe acceleration. There must also be a driver crack, I would imagine.

azazello
11-24-2003, 04:39 AM
2knacke
>>There must also be a driver crack
SoftQuadro for NV/SoftFireGL for ATI.
But as I know, they don't work with the latest drivers(Det50/Cat 3.9):-(.

Obli
11-24-2003, 04:56 AM
Originally posted by jwatte:
Typically, what'll happen on a consumer card is that the driver will read the triangle list and vertices, and turn that into a list of six triangles per incoming triangle, turining each edge into two triangles to draw the lines.
Ack... I would have pointed my finger at SW rasterization however this also works.

Anyway, I can confirm that on consumer vid cards wireframe is much slower than fill (this is the real purpose of the message) - some tests I did told me it's sometimes much worse than 6x the triangle load... (this ratio is implementation dependant anyway so it does not matter).