Skip to main content
gamedev.net
🔒 Locked

buffer sizes

Started by supagu 0 replies 250+ views
Original Post
supagu
supagu
does it take longer to set a buffer if it is larger? for example does it take longer to set a vertex buffer if it contains 3,000 vertices or 30,000 vertices? if not, would it be possible to load all vertices into one buffer all indicies into one buffer and just tell DrawPrimitive some offsets to draw the appropriate part of the buffers?
Supernat02
Supernat02
I don''t know what you mean by set the buffer. Do you mean to draw each set of vertex buffers? It will take enormously longer to draw 100 vertex buffers with 4 vertices in each than 400 vertices in one vertex buffer. In fact, don''t worry about the vertex buffer, be more concerned with the number of calls to DrawPrimitive (or one of it''s counterparts). Keep the number of calls low. Let me give you an example.

Say you have a isometric playfield that you want to tile out in 3D. Say there are 16 by 16 tiles on the ground and the camera is looking over the top of them. This is your D&D game for instance, and there are walkway tiles, grass tiles, and water tiles. You might think:

(for x=0; x < 16*16; x++) { Set Each Tile; }

but that''s not a good idea. You need to optimize the tiles first. Since there are only 3 types of tiles, walkway, grass, and water, you can create/modify vertex indices buffers for each tileset, then just call DrawPrimitive three times, instead of 16*16(256). The CPU overhead should be minimal. Just loop through all of the tiles (as above) and add the correct tile to the correct indices set.

Keep track of whether your character has moved lately and you can optimize the speed further by only re-calculating the tileset if he has moved.

I only used 3 tile types in the example, but even if you had 50, you still save time. Also, 16*16 is kind of low, it would probably be more like 40*40(1600) to improve the look, and that is a bit intensive on the ole DrawPrimitive.

Oh to answer your question, it is going to take a small amount of time longer to load(if that''s what you mean) the vertex buffer with larger vertices, but not significantly I don''t think. And to answer your second question, you can do that.

Hope this helps,
Chris
Chris ByersMicrosoft DirectX MVP - 2005

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.