{…}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
foreach(singleton, &cengine::environment) {
/* every graphical element is formed by one or more textures */
while ((texture = singleton->get()) != EE_NULLTEXTURE) {
glLoadIdentity();
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, texture);
glPushMatrix();
glTranslatef(...);
if (singleton->flipped[EFLIPDIRECTION_VERTICAL])
glRotatef(180.0, 1.0, 0.0, 0.0);
if (singleton->flipped[EFLIPDIRECTION_HORIZONTAL])
glRotatef(180.0, 0.0, 1.0, 0.0);
glRotatef(fmod(singleton->rotation, 360), 0.0, 0.0, 1.0);
glBegin(GL_QUADS);
{
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
}
glEnd();
glPopMatrix();
}
}
glBlendFuncSeparate(GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ZERO);
singleton = light;
/* LIGHT CONE (just a test) */
while ((texture = singleton->get()) != EE_NULLTEXTURE) {
glLoadIdentity();
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, texture);
glPushMatrix();
glTranslatef(...);
if (singleton->flipped[EFLIPDIRECTION_VERTICAL])
glRotatef(180.0, 1.0, 0.0, 0.0);
if (singleton->flipped[EFLIPDIRECTION_HORIZONTAL])
glRotatef(180.0, 0.0, 1.0, 0.0);
glRotatef(fmod(singleton->rotation, 360), 0.0, 0.0, 1.0);
glBegin(GL_QUADS);
{
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
}
glEnd();
glPopMatrix();
}
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA);
singleton = imgbackground;
/* FOREGROUND DARKNESS (just a test) */
while ((texture = singleton->get()) != EE_NULLTEXTURE) {
glLoadIdentity();
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, texture);
glPushMatrix();
glTranslatef(...);
if (singleton->flipped[EFLIPDIRECTION_VERTICAL])
glRotatef(180.0, 1.0, 0.0, 0.0);
if (singleton->flipped[EFLIPDIRECTION_HORIZONTAL])
glRotatef(180.0, 0.0, 1.0, 0.0);
glRotatef(fmod(singleton->rotation, 360), 0.0, 0.0, 1.0);
glBegin(GL_QUADS);
{
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
glTexCoord2i(...);
glVertex3f(...);
}
glEnd();
glPopMatrix();
}
glDisable(GL_BLEND);
glutSwapBuffers();
glFlush();
{…}