Original Post
Hi all, I have a nice little sample of our game working, and I'm looking at the different rendering methods to improve its performance. The game currently simply allows a camera to traverse a tile-based grid of map-tiles (similar to the Ultima games of yore, but in 3D). Currently, I'm rendering triangles using immediate mode rendering, and am looking into VBOs and Display Lists. (Testing system: AMD Sempron 2300+, 512mb RAM, nVidia Geforcefx 5200, WinXP SP2) It takes anywhere from 13-19ms to generate a "locally visible grid" of tiles (e.g. 100x100 to 200x200, not much difference in timing), which includes vertex coordinates and normals (texture coordinates are precalculated in a different module, since the GUI system uses them, too). I've tried implementing a DL rendering scheme, but this boosts the generate-time up by an additional ~45ms, to around 60-61ms total. I'm going to burn some time this weekend to see if there is a different when rendering using the VBO set of functions for rendering, but I'm similarly concerned about video card upload times. Another concern might be thrashing vertex memory, since these lists of tiles rendered onscreen literally change per second as the camera traverses through the map (e.g. as the camera traverses, the list must be rebuilt to reflect the surrounding tiles. See Tile Graphics Techniques and Tile Based Games FAQ if you're unfamiliar with this technique.) I'll certainly be using VBOs and/or DLs for other parts of the rendering which are more static (e.g. parts of buildings, vehicles, other static minutae which become part of the landscape) however I'm wondering if maybe using a video-memory-accessing vertex buffering scheme might be pointless in this case since (a) the upload time to video memory may eventually interfere with other more intensive aspects of the engine such as physics or... other graphics I haven't gotten to yet :), and (b) I would constantly be swapping the VRAM to which the data is sent. Any thoughts on this?