glBindTexture(GL_TEXTURE_2D, *texture[sprite->texture]);
// Rotate
if (sprite->Rotation() != 0 && sprite->Rotation() != 360)
{
glMatrixMode(GL_TEXTURE);
glRotatef(sprite->Rotation(), 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
}
// Scale
if (sprite->Scaling() != 1.0f && !ScalingScene)
glScalef(sprite->Scaling(), sprite->Scaling(), 1);
int sx = x / sprite->Scaling();
int sy = y / sprite->Scaling();
// Draw
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex2f(sx, sy);
glTexCoord2f(1.0f, 0.0f); glVertex2f(sx + sprite->w, sy);
glTexCoord2f(1.0f, 1.0f); glVertex2f(sx + sprite->w, sy + sprite->h);
glTexCoord2f(0.0f, 1.0f); glVertex2f(sx, sy + sprite->h);
glEnd();
// Scale back
if (sprite->Scaling() != 1.0f && !ScalingScene)
glScalef(1.0f / sprite->Scaling(), 1.0f / sprite->Scaling(), 1);
// Rotate back
if (sprite->Rotation() != 0 && sprite->Rotation() != 360)
{
glMatrixMode(GL_TEXTURE);
glRotatef(360 - sprite->Rotation(), 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
}
Optimizing rendering
I'm currently trying to optimize the way my engine renders it's 2D tiles. It is pretty fast already (around 800-900 frames per second when rendering 2000 32x32 particles), but any improvement is great :)
Each sprite has a rotation and scaling value, which determines if the sprite should be rotated and scaled.
Code:
If there is anything I could improve, feel free to post :)
Thanks in advance!
You could use glPushMatrix & glPopMatrix instead of returning to glMatrixMode(GL_MODELVIEW). Not sure if this will speed stuff up though.
Are the tiles static? Do you change their angle and size all the time? If no, you could load them once into a display list.
Are the tiles static? Do you change their angle and size all the time? If no, you could load them once into a display list.
Do not bind a separate texture for all tiles, instead have only a couple of big texture maps (with all the small tiles), with different uv-coordinates...
this way, bind the texture before drawing the tiles, then draw all tiles in order etc...
this way, bind the texture before drawing the tiles, then draw all tiles in order etc...
Just out of curiosity why are you looking at optimizing it more ? It already is running at good speed. You won't gain anything with more optimization.
Well having a couple of big texture maps, prioritize the textures and this could improve the rendering. However you could also sort the textures and tiles which can improve the rendering. However I don't see the necessity with the framerate you are currently getting. Why not optimize when required ?
Well having a couple of big texture maps, prioritize the textures and this could improve the rendering. However you could also sort the textures and tiles which can improve the rendering. However I don't see the necessity with the framerate you are currently getting. Why not optimize when required ?
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement