“You would be surprised at how much not using strips can hurt”
For me, unfortunatly I have no choice but to just suffer with unsorted triangle lists. The next feature to be added to my engine will be View Independent Progressive Meshs. For those that have never heard of it, it’s a LOD scheme for sending a stack of triangles that represent the model at a progressive levels of detail. For this reason, for the purposes of optimisation I have no control over triangle order(as soon the order will be determined by the LOD scheme) and VIPM only uses triangle lists.
I could use descreet LOD’s(like a mipmapped model) but not only is that much more memory intensive(cause you have so many copies of the model) but also not as easy to hide the morphing between the two models. I have seen some suggestions that alpha blending between the two LOD models is an options, but I’ve always admired the purity vanilla VIPM. Perhaps I should consider this method. The difficult part here is that either solution will be so time consuming to code that I don’t want to just ‘try out’ something that will take me weeks to code. My brain is soft today, but from memory a mipmap pyramid(dowmwards) where each image is half the size of the parent will total to exactly the same size as the parent, so roughly double a models size. … Not so bad I guess.
"Maybe you should try making a persistent representation. "
I think your suggesting just leaving the model data in AGP memory. I considered this be gave myself a headache trying to work out how I would page data in and out of AGP cache when the static data exceeded the AGP memory. Paging is a lot harder that it initially seems esp if you have priorities.
I only use AGP data in the VAR calls. I was told be professional game developer once to stay away from the video ram, else I mess up texture caching and cause thrashing, besides there is no GetFreeVideoRam() type call to see how much opengl is using and my game will be using full unique landscape texturing, so I probably don’t want to mess around here do I?
Is spatial sorting worth the effort? I could probably turn the zbuffer off for things like a terrain system where I don’t have any intersections to worry about. Is it worth the effort of doing all those comparisons on the CPU? How fast are statically created display lists compared to agp resident vertex
ormal arrays?
“Are u using vertex lighting or your own per-pixel lighting?”
Good point. I just left vertex lighting on. I have long term future plans of baking light in to non moving object via radiosity. Dynamic object were going to be left with bump maps + vertex lighting(though I just heard about vertex maps).
"A poor VAR program seems to be slower than a bad standard vertex array program "
Yes. My initial attempt just called a global flush at the end of each mesh, this sucked but it was good for testing. The next version used fences properly in multiple buffers(single memory block), this saw a 50% speedup over standard vertex arrays.
Does anyone know of a document that tells you where a bottleneck is? .i.e If you increase the screen resolution without a drop in frame rate you have a problem with X(fill,bus,etc).
Chris