My application is made with DX8.1 and it renders static objects via fixed
pipline and hardvare vertex processing. Vertex and Index buffers are static,
they never change during rendering.
The hardware is a GF2 with 64 MB.
I have following issue. The program renders about 30-200 meshes. The meshes
and textures are stored in the managed pool, rendering is made "by hand",
that means by call to DrawIndexedPrimitive. There is a simple culling
algorithm implemented with bound spheres around the object. The algorithm
culles objects behind the camera.
The number of texture changes per frame is constantly 23, and the number of
VB changes per frame ist constantly 2.
The duration of the own algorithms which cull and render is constantly
between 1 and 2 milliseconds.
Under this circumstances I measure the duration of Present: If the number of
objects is about 100 or less, Present takes 2-4 milliseconds. If the number
of objects grows about 100-110 the duration of Present increases
dramatically to 20-30 milliseconds. Now, that is not enough. If I turn the
camera to the sky, the objects will not be culled(!), but non of them can be
seen as they are outside of the frustum, the duration of Present decreases
to its original value of 2-4 milliseconds.
Therefore I think it is somehow a problem with filling the pixels or with
Z-Buffering, or somethink similar. I would be very happy on any advise.