I would not change it just because it 'feels' wrong
This is something I used when I was prototyping Paddlenoid:
#define TRIANGLE_QUAD_ARRAY(x, y, w, h) \
{ \
x, y, \
x, y + h, \
x + w, y + h, \
\
x + w, y + h, \
x + w, y, \
x, y \
}
void DrawTextureInPlace(GLuint gluiTexture, GLshort iWidht, GLshort iHeight)
{
static const GLshort texCoords[] = TRIANGLE_QUAD_ARRAY(0, 0, 1, 1);
const GLshort ihw = iWidht/2;
const GLshort ihh = iHeight/2;
const GLshort boxCoords[] = TRIANGLE_QUAD_ARRAY(-ihw, -ihh, iWidht, iHeight);
glBindTexture(GL_TEXTURE_2D, gluiTexture);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_SHORT, 0, texCoords);
glVertexPointer(2, GL_SHORT, 0, boxCoords);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
It uses vertex arrays. It's not the 'right' way either. But since it has less 'gl' calls it's going to be a lot faster on some devices.
The idea is to
'glPushMatrix' and 'glRotate' / 'glTranslate' into position, call this function and 'glPopMatrix' again .. if you're working with a fixed pipeline that is...
But like 'Archibald' and 'PsySal' already mentioned. For really great performance, try to work with larger batches of triangles. And when you do, use VBO's instead of vertex array (like in my example) and don't create them when you need to draw them but create them just once before you draw them
But more importantly, only optimize when you have a reason to. If this is fast / practical enough, don't change a thing, focus on the game !