void render() { //Clear color buffer glClear( GL_COLOR_BUFFER_BIT ); //Calculate texture maxima GLfloat textureRight = (GLfloat)SCREEN_WIDTH / (GLfloat)gRepeatingTexture.textureWidth(); GLfloat textureBottom = (GLfloat)SCREEN_HEIGHT / (GLfloat)gRepeatingTexture.textureHeight(); //Use repeating texture glBindTexture( GL_TEXTURE_2D, gRepeatingTexture.getTextureID() ); //Switch to texture matrix glMatrixMode( GL_TEXTURE ); //Reset transformation glLoadIdentity(); //Scroll texture glTranslatef( gTexX / gRepeatingTexture.textureWidth(), gTexY / gRepeatingTexture.textureHeight(), 0.f ); //Render glBegin( GL_QUADS ); glTexCoord2f( 0.f, 0.f ); glVertex2f( 0.f, 0.f ); glTexCoord2f( textureRight, 0.f ); glVertex2f( SCREEN_WIDTH, 0.f ); glTexCoord2f( textureRight, textureBottom ); glVertex2f( SCREEN_WIDTH, SCREEN_HEIGHT ); glTexCoord2f( 0.f, textureBottom ); glVertex2f( 0.f, SCREEN_HEIGHT ); glEnd(); //Update screen glutSwapBuffers(); }
void render() { // clear color buffer glClear(GL_COLOR_BUFFER_BIT); // calculate centered offsets GLfloat x = (SCREEN_WIDTH - gCheckerBoardTexture.textureWidth()) / 2.f; GLfloat y = (SCREEN_HEIGHT - gCheckerBoardTexture.textureHeight()) / 2.f; // render checkerboard texture gCheckerBoardTexture.render(x, y); // update screen glutSwapBuffers(); }
void update() { //Scroll texture gTexX++; gTexY++; //Cap scrolling if( gTexX >= gRepeatingTexture.textureWidth() ) { gTexX = 0.f; } if( gTexY >= gRepeatingTexture.textureHeight() ) { gTexY = 0.f; } }
bool loadMedia() { // load texture if (!gCircleTexture.loadTextureFromFile("./images/circle.png")) { cout << "Unable to load circle texture!" << endl; return false; } // lock texture for modificatio gCircleTexture.lock(); // calculate target color GLuint targetColor; GLubyte *colors = (GLubyte *)&targetColor; colors[0] = 000; colors[1] = 255; colors[2] = 255; colors[3] = 255; // replace target color with transparent black GLuint *pixels = gCircleTexture.getPixelData32(); GLuint pixelCount = gCircleTexture.textureWidth() * gCircleTexture.textureHeight(); GLuint i; for (i = 0; i < pixelCount; i++) { if (pixels[i] == targetColor) pixels[i] = 0; } // diagonal lines GLuint x, y; int factor = 10; for (y = 0; y < gCircleTexture.imageHeight(); y++) { for (x = 0; x < gCircleTexture.imageWidth(); x++) { if (y % factor != x % factor) gCircleTexture.setPixel32(x, y, 0); } } // update texture gCircleTexture.unlock(); return true; }