Advertisement
Guest User

Untitled

a guest
Jun 7th, 2014
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.40 KB | None | 0 0
  1. void drawSkybox(float x, float y, float z, float width, float height, float length)
  2. {
  3.  
  4.     glClearColor(0.0, 0.0, 0.0, 1.0);
  5.     glColor3f(1.0, 1.0, 1.0);
  6.     // Center the Skybox around the given x,y,z position
  7.     x = x - width / 2;
  8.     y = y - height / 2;
  9.     z = z - length / 2;
  10.  
  11.  
  12.     // Draw Front side
  13.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYFRONT]);
  14.     glBegin(GL_QUADS);
  15.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x, y, z + length);
  16.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x, y + height, z + length);
  17.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x + width, y + height, z + length);
  18.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x + width, y, z + length);
  19.     glEnd();
  20.  
  21.     // Draw Back side
  22.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYBACK] + 1);  // IF I ADD +1 HERE, IT WILL GET THE NEXT TEXTURE WHICH IS THE HELI TEXTURE
  23.     glBegin(GL_QUADS);
  24.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x + width, y, z);
  25.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x + width, y + height, z);
  26.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x, y + height, z);
  27.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x, y, z);
  28.     glEnd();
  29.  
  30.     // Draw Left side
  31.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYLEFT]);
  32.     glBegin(GL_QUADS);
  33.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x, y + height, z);
  34.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x, y + height, z + length);
  35.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x, y, z + length);
  36.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x, y, z);
  37.     glEnd();
  38.  
  39.     // Draw Right side
  40.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYRIGHT]);
  41.     glBegin(GL_QUADS);
  42.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x + width, y, z);
  43.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x + width, y, z + length);
  44.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x + width, y + height, z + length);
  45.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x + width, y + height, z);
  46.     glEnd();
  47.  
  48.     // Draw Up side
  49.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYUP]);
  50.     glBegin(GL_QUADS);
  51.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x + width, y + height, z);
  52.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x + width, y + height, z + length);
  53.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x, y + height, z + length);
  54.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x, y + height, z);
  55.     glEnd();
  56.  
  57.     // Draw Down side
  58.     glBindTexture(GL_TEXTURE_2D, SkyboxTexture[SKYDOWN]);
  59.     glBegin(GL_QUADS);
  60.     glTexCoord2f(0.0f, 0.0f); glVertex3f(x, y, z);
  61.     glTexCoord2f(1.0f, 0.0f); glVertex3f(x, y, z + length);
  62.     glTexCoord2f(1.0f, 1.0f); glVertex3f(x + width, y, z + length);
  63.     glTexCoord2f(0.0f, 1.0f); glVertex3f(x + width, y, z);
  64.     glEnd();
  65.  
  66. }
  67.  
  68. void render(){
  69.  
  70.     glClearColor(1.0, 1.0, 1.0, 1.0);
  71.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  72.     glLoadIdentity();
  73.     Enables();
  74.  
  75.     //glBindTexture(GL_TEXTURE_2D, 0);
  76.  
  77.    
  78.  
  79.     if (first_person){
  80.         glRotatef(Xrotation, 1.0, 0.0, 0.0);
  81.         glRotatef(Yrotation, 0.0, 1.0, 0.0);
  82.     }
  83.     else{
  84.         glTranslatef(0.0f, 20.0f, -cRadius);
  85.         glRotatef(Xrotation, 1.0, 0.0, 0.0);
  86.         DrawPlayer();
  87.         glRotatef(Yrotation, 0.0, 1.0, 0.0);
  88.     }
  89.  
  90.     glTranslated(-Xposition, -Yposition, -Zposition);
  91.  
  92.    
  93. //  DrawEntities();
  94. //  drawFilledRect(0, -11, 0, 8192, 8192, RGBf(0.5, 0.5, 0.5));
  95. //  drawCollisionGrid();
  96. //  DrawCubes();
  97.     //DrawTree(quad);
  98.  
  99.    
  100. // THIS CALL DOESN'T RENDER THE TEXTURE
  101.     glPushMatrix();
  102.     glTranslatef(1000.0f, 100.0f, 1000);
  103.     mesh->Render();
  104.     glPopMatrix();
  105.    
  106. // BUT THIS ONE DOES...
  107.     drawSkybox(0, 0, 0, 20000, 20000, 20000);
  108.  
  109.    
  110.    
  111.  
  112.     // TODO desenhar palavras tem problemas de performance
  113.     //DrawHUD();
  114.    
  115.     glfwSwapBuffers(window);
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement