//////////////////////////////////////////////////////////// /// Initialize OpenGL states into the specified view /// /// \param Window Target window to initialize /// //////////////////////////////////////////////////////////// void initialize(sf::Window& window) { // Activate the window window.setActive(); // Setup OpenGL states // Set color and depth clear value glClearDepth(1.f); glClearColor(0.f, 0.5f, 0.5f, 0.f); // Enable Z-buffer read and write glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); // Setup a perspective projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); static const double pi = 3.141592654; GLdouble extent = std::tan(90.0 * pi / 360.0); glFrustum(-extent, extent, -extent, extent, 1.0, 500.0); // Enable position and texture coordinates vertex components glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); }
//////////////////////////////////////////////////////////// /// Draw the OpenGL scene (a rotating cube) into /// the specified view /// /// \param window Target window for rendering /// \param elapsedTime Time elapsed since the last draw /// //////////////////////////////////////////////////////////// void draw(sf::Window& window, float elapsedTime) { // Activate the window window.setActive(); // Clear color and depth buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Apply some transformations glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.f, 0.f, -200.f); glRotatef(elapsedTime * 0.05f, 1.f, 0.f, 0.f); glRotatef(elapsedTime * 0.03f, 0.f, 1.f, 0.f); glRotatef(elapsedTime * 0.09f, 0.f, 0.f, 1.f); // Draw a cube glBegin(GL_QUADS); glColor3f(1.f, 1.f, 0.f); glVertex3f(-50.f, -50.f, -50.f); glVertex3f(-50.f, 50.f, -50.f); glVertex3f( 50.f, 50.f, -50.f); glVertex3f( 50.f, -50.f, -50.f); glColor3f(1.f, 1.f, 0.f); glVertex3f(-50.f, -50.f, 50.f); glVertex3f(-50.f, 50.f, 50.f); glVertex3f( 50.f, 50.f, 50.f); glVertex3f( 50.f, -50.f, 50.f); glColor3f(0.f, 1.f, 1.f); glVertex3f(-50.f, -50.f, -50.f); glVertex3f(-50.f, 50.f, -50.f); glVertex3f(-50.f, 50.f, 50.f); glVertex3f(-50.f, -50.f, 50.f); glColor3f(0.f, 1.f, 1.f); glVertex3f(50.f, -50.f, -50.f); glVertex3f(50.f, 50.f, -50.f); glVertex3f(50.f, 50.f, 50.f); glVertex3f(50.f, -50.f, 50.f); glColor3f(1.f, 0.f, 1.f); glVertex3f(-50.f, -50.f, 50.f); glVertex3f(-50.f, -50.f, -50.f); glVertex3f( 50.f, -50.f, -50.f); glVertex3f( 50.f, -50.f, 50.f); glColor3f(1.f, 0.f, 1.f); glVertex3f(-50.f, 50.f, 50.f); glVertex3f(-50.f, 50.f, -50.f); glVertex3f( 50.f, 50.f, -50.f); glVertex3f( 50.f, 50.f, 50.f); glEnd(); }
//////////////////////////////////////////////////////////// /// Initialize OpenGL states into the specified view /// /// \param Window Target window to initialize /// //////////////////////////////////////////////////////////// void initialize(sf::Window& window) { // Activate the window window.setActive(); // Setup OpenGL states // Set color and depth clear value glClearDepth(1.f); glClearColor(0.f, 0.5f, 0.5f, 0.f); // Enable Z-buffer read and write glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); // Setup a perspective projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(90.f, 1.f, 1.f, 500.f); }
int main (int argc, char **argv) { //Init with start Position xpos=9; ypos=9; zpos=15; xrot=50; //80° yrot=135; //135° // Set the color and depth clear values glClearDepth(1.f); glClearColor(0.f, 0.f, 0.f, 0.f); // Enable Z-buffer read and writeca glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); // Setup a perspective projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); perspectiveGL(40.f, (1.f * xres / yres), 1.f, 500.f); LoadTextures(); while (DSWindow.isOpen()) // Game loop { //calculate Time maintimer.stop(); difTime = maintimer.getElapsedTimeInSec(); if (difTime > 0.1) difTime = 0; //remove first time gesTime += difTime; maintimer.start(); //Clear Screen and set OpenGL Settings DSWindow.setActive(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClearColor (0.0,0.0,0.0,1.0); //clear the screen to black enableGlOptions(); //enable graphic-settings inputmanager(difTime); //mve camera etc world(); //draw the "World // levelDrawer1.drawAntMap(0); levelDrawer1.drawBlocks(); if(gameStart) { antHill1.ki(); antHill1.antanimation(); } DrawHUD(); //draw the HUD // Finally, display the rendered frame on screen DSWindow.display(); } return EXIT_SUCCESS; }
void draw() { //Activate the window's context window.setActive(); //Various settings glClearColor(0.5, 0.5, 0.5, 0.0f); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glClearDepth(1.0f); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glEnable(GL_TEXTURE_2D); //Lighting GLfloat light_color[] = {0.9, 0.9, 0.9, 1.f}; glMaterialfv(GL_FRONT, GL_DIFFUSE, light_color); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //Setup projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); GLfloat ratio = float(window.getSize().x) / window.getSize().y; glFrustum(-ratio, ratio, -1.0, 1.0, 1.0, 500.0); //Store start time std::chrono::time_point<std::chrono::system_clock> startTime=std::chrono::system_clock::now(); //The rendering loop glMatrixMode(GL_MODELVIEW); while (window.isOpen()) { std::chrono::duration<double> elapsed_seconds = std::chrono::system_clock::now() - startTime; double time=elapsed_seconds.count(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f, -20.0f, -45.0f); glPushMatrix(); glRotatef(-time*50.0, 0.0, 1.0, 0.0); glTranslatef(20.0, 0.0, 0.0); unanimatedAstroBoy.draw(); glPopMatrix(); glPushMatrix(); glRotatef(-time*50.0+90.0, 0.0, 1.0, 0.0); glTranslatef(20.0, 0.0, 0.0); astroBoy.drawFrame(time); glPopMatrix(); glPushMatrix(); glRotatef(-time*50.0+180.0, 0.0, 1.0, 0.0); glTranslatef(20.0, 0.0, 0.0); astroBoyMovingGlasses.drawFrame(time); glPopMatrix(); glRotatef(-time*50.0+270.0, 0.0, 1.0, 0.0); glTranslatef(20.0, 0.0, 0.0); astroBoyHeadBanging.drawFrame(time); //Swap buffer (show result) window.display(); } }
//////////////////////////////////////////////////////////// /// Draw the OpenGL scene (a rotating cube) into /// the specified view /// /// \param window Target window for rendering /// \param elapsedTime Time elapsed since the last draw /// //////////////////////////////////////////////////////////// void draw(sf::Window& window, float elapsedTime) { // Activate the window window.setActive(); // Clear color and depth buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Apply some transformations glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.f, 0.f, -200.f); glRotatef(elapsedTime * 10.f, 1.f, 0.f, 0.f); glRotatef(elapsedTime * 6.f, 0.f, 1.f, 0.f); glRotatef(elapsedTime * 18.f, 0.f, 0.f, 1.f); // Define a 3D cube (6 faces made of 2 triangles composed by 3 vertices) static const GLfloat cube[] = { // positions // colors -50, -50, -50, 1, 1, 0, -50, 50, -50, 1, 1, 0, -50, -50, 50, 1, 1, 0, -50, -50, 50, 1, 1, 0, -50, 50, -50, 1, 1, 0, -50, 50, 50, 1, 1, 0, 50, -50, -50, 1, 1, 0, 50, 50, -50, 1, 1, 0, 50, -50, 50, 1, 1, 0, 50, -50, 50, 1, 1, 0, 50, 50, -50, 1, 1, 0, 50, 50, 50, 1, 1, 0, -50, -50, -50, 1, 0, 1, 50, -50, -50, 1, 0, 1, -50, -50, 50, 1, 0, 1, -50, -50, 50, 1, 0, 1, 50, -50, -50, 1, 0, 1, 50, -50, 50, 1, 0, 1, -50, 50, -50, 1, 0, 1, 50, 50, -50, 1, 0, 1, -50, 50, 50, 1, 0, 1, -50, 50, 50, 1, 0, 1, 50, 50, -50, 1, 0, 1, 50, 50, 50, 1, 0, 1, -50, -50, -50, 0, 1, 1, 50, -50, -50, 0, 1, 1, -50, 50, -50, 0, 1, 1, -50, 50, -50, 0, 1, 1, 50, -50, -50, 0, 1, 1, 50, 50, -50, 0, 1, 1, -50, -50, 50, 0, 1, 1, 50, -50, 50, 0, 1, 1, -50, 50, 50, 0, 1, 1, -50, 50, 50, 0, 1, 1, 50, -50, 50, 0, 1, 1, 50, 50, 50, 0, 1, 1 }; // Draw the cube glVertexPointer(3, GL_FLOAT, 6 * sizeof(GLfloat), cube); glColorPointer(3, GL_FLOAT, 6 * sizeof(GLfloat), cube + 3); glDrawArrays(GL_TRIANGLES, 0, 36); }