Brute force terrain on 10fps

Started by
15 comments, last by Fingers_ 17 years, 6 months ago
I use OpenGL to brute-force render a 512 x 512 terrain using triangle strips. For texture mapping I use a base 128 x 128 texture stretched over the surface and a 128 x 128 detail texture tiled all over the surface. Nothing fancy here. I use FRAPS and I get 10 fps. I think it's very low. What do u think I should do? The system is AMD 3000+, Geforce 6800 with 128 MB and 1 GB RAM. Thanks.
Advertisement
1
make sure mip-mapping is enable for your textures
it really helps improve texture rendering time

2
quit using brute force, at the least cull the section of the heightmap that is clearly behind the camera...
At least use an OCTree to cull out parts of the terrain that you cant see.
OCTree is a very simple space partitioning algorithm.

You can use ROAM (Realtime Optimally Adapting Meshes) very effectively to dramatically increase the FPS for terrains.

Use vertex arrays or vertex buffers to increase speed.
++ My::Game ++
Thanks for the answers. I should try some of the proposals.
Doing all those glVertex calls really slows down. My terrain rendering went from 40 fps to 300+ just by putting it into display lists. Of course you should further optimize with octree/quadtree and frustum culling, so you draw only what's visible.

-Riku
If you're using glVertex (which I'm going to assume you are), that's not brute force. That's stupid force. Switch to VBOs and you'll be able to move vastly higher numbers of polys.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
How are you rendering it? Is the terrain stored in a VBO or a display list or whatever (in VRAM) or are you transferring it to the GPU each frame? Does the frame rate vary depending on how much of the terrain is in view?

Half a million polygons shouldn't be too much for a reasonably modern video card... You're only getting 5Mtris/sec which is a really low number indeed.
I use glVertex() calls. It seems strange to me too because the rate is too low even for brute force that's why I made the post. I'll use VBO and some culling technique to see what happens.
Here are some links on How To's and FAQs on OpenGL optimizations.

Read this
and
this
++ My::Game ++
I just put my terrain rendering into display lists (added a compile function that compiles the display lists and does a few other things) and now my terrain render function is 4 lines long. However, it didn't seem to increase my framerate at all. I'm certainly not able to double the fidelity of the terrain, or the FPS drops from a constant locked 60 to about 30-40.

I also just stopped drawing parts of the terrain behind the camera, and saw no difference :S

Any suggestions?

[Edited by - industrion on October 10, 2006 1:07:24 PM]

This topic is closed to new replies.

Advertisement