Low fps problems with many objects

Started by Phyyl, March 18, 2013, 01:44:11

Previous topic - Next topic

Phyyl

Hi everyone, I wrote a simple "game" that allows me to modify a chunk of 32x32x32 blocks. It has ray picking and lighting. Here's a screenshot of what I can do with it :



Alright, now here's my problem. My code is fairly good, I'm using vertex buffer objects, one for each block. The chunk is never really re-rendered, because each block is an individual object and can be rendered alone. The blocks are also only rendering faces that are visible, and they tell the 6 blocks (if existing) to hide a face for faster rendering.

Now, I'm only getting ~100fps with a 32x32x32 block that only contains 32x8x32 blocks really, the rest is air. Why am I getting so low fps? Anyone has proposition?

Here are the system specs :

i5 760 2.8ghz
8gb ram 1333
gtx 580 1.5gb
intel 80gb ssd

I can post parts of my code if anyone wants it to help me!

Thanks a lot!

quew8

I wouldn't say that 100 fps is at all low.

Phyyl

Well you know, in Minecraft I get over 800fps... there's something wrong you know...

quew8


CodeBunny

You need to bake multiple blocks into a single graphics object, reducing the number of draw calls.

Say a "chunk" is a 32x32x32 group of blocks. What you need to do is combine their geometry into a single draw call, only drawing faces that are exposed to open air.

xShane

Quote from: CodeBunny on March 20, 2013, 14:12:03
You need to bake multiple blocks into a single graphics object, reducing the number of draw calls.

Say a "chunk" is a 32x32x32 group of blocks. What you need to do is combine their geometry into a single draw call, only drawing faces that are exposed to open air.

That.

Make sure the chunks that can't been "seen" by the camera aren't being drawn.

dangerdoc

For each block, make sure that a face doesnt render if there is a block in front of that face. Also, instead of calling block.draw() for each block, just make the coordinates go into a mesh object (an array that holds vectors) then render that object instead.
“We build but to tear down. Most of our work and resource is squandered. Our onward march is marked by devastation. Everywhere there is an appalling loss of time, effort and life. A cheerless view, but true.” - Nikola Tesla