/********************************************************************* * * * FLY * * --E#Y#E-- * * ===MUSCLE=== * * * *********************************************************************/ /* Header Files */ #include "cube.h" CUBE cube7; /* Cube Map */ GLuint m_cubeMapTex; bool m_cubeMapInitialized; int m_viewportWidth; int m_viewportHeight; //--------------------------------------------------------------------------- /* Resize */ void CUBE::onResize(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); /* Perspective */ const GLdouble fieldOfView = 52.0f; const GLdouble aspect = (float)(width) / (float)(height); const GLdouble zNear = 1.0f; const GLdouble zFar = 1000.0f; /* Perspective */ gluPerspective(fieldOfView, aspect, zNear, zFar); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } //--------------------------------------------------------------------------- /* Cube Map Rendering */ void CUBE::beginCubeMapRendering(int texSize) { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); m_viewportWidth = viewport[2]; m_viewportHeight = viewport[3]; glViewport(0, 0, texSize, texSize); glMatrixMode(GL_PROJECTION); glLoadIdentity(); /* Perspective */ const GLdouble fieldOfView = 90.0f; const GLdouble zNear = 0.1f; const GLdouble zFar = 100.0f; /* Perspective */ gluPerspective(fieldOfView, 1, zNear, zFar); glMatrixMode(GL_MODELVIEW); } //--------------------------------------------------------------------------- /* Begin Cupe Map Face */ void CUBE::beginCubeMapFace(int TEX) { const GLfloat ROTATION[6][6] = { // at up { 1.0, 0.0, 0.0, 0.0,-1.0, 0.0 }, // pos x {-1.0, 0.0, 0.0, 0.0,-1.0, 0.0 }, // neg x { 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }, // pos y { 0.0,-1.0, 0.0, 0.0, 0.0,-1.0 }, // neg y { 0.0, 0.0, 1.0, 0.0,-1.0, 0.0 }, // poz z { 0.0, 0.0,-1.0, 0.0,-1.0, 0.0 } // neg z }; glClear(GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(0.0, 0.0, 0.0, ROTATION[TEX][0], ROTATION[TEX][1], ROTATION[TEX][2], ROTATION[TEX][3], ROTATION[TEX][4], ROTATION[TEX][5]); } //--------------------------------------------------------------------------- /* Finish Cube Map Face */ void CUBE::finishCubeMapFace(int TEX, int texSize) { glBindTexture(GL_TEXTURE_CUBE_MAP, m_cubeMapTex); if(m_cubeMapInitialized) { glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + TEX, 0, 0, 0, 0, 0, texSize, texSize); } else { glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + TEX, 0, GL_RGB8, 0, 0, texSize, texSize, 0); } } //--------------------------------------------------------------------------- /* Cup Map Rendering */ void CUBE::endCubeMapRendering() { m_cubeMapInitialized = true; cube7.onResize(m_viewportWidth, m_viewportHeight); } //--------------------------------------------------------------------------