LWJGL Forum

Programming => Lightweight Java Gaming Library => Topic started by: Phyyl on March 18, 2013, 01:44:11

Title: Low fps problems with many objects
Post by: Phyyl on March 18, 2013, 01:44:11
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 :

(http://i.imgur.com/yTc2B34.png)

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!
Title: Re: Low fps problems with many objects
Post by: quew8 on March 18, 2013, 16:39:11
I wouldn't say that 100 fps is at all low.
Title: Re: Low fps problems with many objects
Post by: Phyyl on March 18, 2013, 20:45:16
Well you know, in Minecraft I get over 800fps... there's something wrong you know...
Title: Re: Low fps problems with many objects
Post by: quew8 on March 19, 2013, 15:27:46
Well played Monseigneur Phyyl.
Title: Re: Low fps problems with many objects
Post by: 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.
Title: Re: Low fps problems with many objects
Post by: xShane on March 20, 2013, 17:59:34
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.
Title: Re: Low fps problems with many objects
Post by: dangerdoc on April 25, 2013, 00:28:05
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.