00001 
00032 #include "llviewerprecompiledheaders.h"
00033 
00034 #include "llbox.h"
00035 
00036 #include "llgl.h"
00037 #include "llglheaders.h"
00038 
00039 LLBox           gBox;
00040 
00041 
00042 void LLBox::prerender()
00043 {
00044         F32 size = 1.f;
00045 
00046         mTriangleCount = 6 * 2;
00047 
00048         mVertex[0][0] = mVertex[1][0] = mVertex[2][0] = mVertex[3][0] = -size / 2;
00049         mVertex[4][0] = mVertex[5][0] = mVertex[6][0] = mVertex[7][0] =  size / 2;
00050         mVertex[0][1] = mVertex[1][1] = mVertex[4][1] = mVertex[5][1] = -size / 2;
00051         mVertex[2][1] = mVertex[3][1] = mVertex[6][1] = mVertex[7][1] =  size / 2;
00052         mVertex[0][2] = mVertex[3][2] = mVertex[4][2] = mVertex[7][2] = -size / 2;
00053         mVertex[1][2] = mVertex[2][2] = mVertex[5][2] = mVertex[6][2] =  size / 2;
00054 }
00055 
00056 
00057 void LLBox::cleanupGL()
00058 {
00059         
00060 }
00061 
00062 void LLBox::renderface(S32 which_face)
00063 {
00064         static F32 normals[6][3] =
00065         {
00066                 {-1.0f,  0.0f,  0.0f},
00067                 { 0.0f,  1.0f,  0.0f},
00068                 { 1.0f,  0.0f,  0.0f},
00069                 { 0.0f, -1.0f,  0.0f},
00070                 { 0.0f,  0.0f,  1.0f},
00071                 { 0.0f,  0.0f, -1.0f}
00072         };
00073         static S32 faces[6][4] =
00074         {
00075                 {0, 1, 2, 3},
00076                 {3, 2, 6, 7},
00077                 {7, 6, 5, 4},
00078                 {4, 5, 1, 0},
00079                 {5, 6, 2, 1},
00080                 {7, 4, 0, 3}
00081         };
00082 
00083         glBegin(GL_QUADS);
00084                 glNormal3fv(&normals[which_face][0]);
00085                 glTexCoord2f(1,0);
00086                 glVertex3fv(&mVertex[ faces[which_face][0] ][0]);
00087                 glTexCoord2f(1,1);
00088                 glVertex3fv(&mVertex[ faces[which_face][1] ][0]);
00089                 glTexCoord2f(0,1);
00090                 glVertex3fv(&mVertex[ faces[which_face][2] ][0]);
00091                 glTexCoord2f(0,0);
00092                 glVertex3fv(&mVertex[ faces[which_face][3] ][0]);
00093         glEnd();
00094 }
00095 
00096 void LLBox::render()
00097 {
00098     
00099     
00100     
00101     
00102     
00103     
00104     
00105     
00106     
00107     
00108     
00109     
00110     
00111     
00112     
00113     
00114     
00115     
00116     
00117     
00118     
00119     
00120     
00121 
00122         renderface(5);
00123         renderface(4);
00124         renderface(3);
00125         renderface(2);
00126         renderface(1);
00127         renderface(0);
00128 }