2011-01-16, 13:43
Thanks you for your advice. All CPU intensive operations are multi-threaded (i.e. 4 threads on my 4-core CPU). I will be looking into OpenGL optimisations.
Here's the code that matters:
Here's the code that matters:
Code:
glEnable (GL_BLEND);
glEnable (GL_TEXTURE_2D);
glDisable (GL_DEPTH_TEST);
glMatrixMode (GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho (-1, 1, -1, 1, -1, 1);
glMatrixMode (GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glPolygonMode (GL_FRONT, GL_FILL);
glBindTexture (GL_TEXTURE_2D, fishbmc_texture);
// get a lock on the texture pixels
while (!screenbuffer->lock())
usleep (1);
// update texture
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, configuration->width(), configuration->height(), GL_RGBA, GL_UNSIGNED_BYTE, pixels);
screenbuffer->unlock();
glBegin (GL_QUADS);
glTexCoord2f (fishbmc_left, 0.0f); glVertex3f (-1.0f, -1.0f, 1.0f);
glTexCoord2f (fishbmc_right, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f);
glTexCoord2f (fishbmc_right, 1.0f); glVertex3f (1.0f, 1.0f, 1.0f);
glTexCoord2f (fishbmc_left, 1.0f); glVertex3f (-1.0f, 1.0f, 1.0f);
glEnd();
glPopMatrix();
glMatrixMode (GL_PROJECTION);
glPopMatrix();