/** * @file llbox.cpp * @brief Draws a box using display lists for speed. * * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. * $License$ */ #include "llviewerprecompiledheaders.h" #include "llbox.h" #include "llgl.h" #include "llglheaders.h" LLBox gBox; // These routines support multiple textures on a box void LLBox::prerender() { F32 size = 1.f; mTriangleCount = 6 * 2; mVertex[0][0] = mVertex[1][0] = mVertex[2][0] = mVertex[3][0] = -size / 2; mVertex[4][0] = mVertex[5][0] = mVertex[6][0] = mVertex[7][0] = size / 2; mVertex[0][1] = mVertex[1][1] = mVertex[4][1] = mVertex[5][1] = -size / 2; mVertex[2][1] = mVertex[3][1] = mVertex[6][1] = mVertex[7][1] = size / 2; mVertex[0][2] = mVertex[3][2] = mVertex[4][2] = mVertex[7][2] = -size / 2; mVertex[1][2] = mVertex[2][2] = mVertex[5][2] = mVertex[6][2] = size / 2; } // These routines support multiple textures on a box void LLBox::cleanupGL() { // No GL state, a noop. } void LLBox::renderface(S32 which_face) { static F32 normals[6][3] = { {-1.0f, 0.0f, 0.0f}, { 0.0f, 1.0f, 0.0f}, { 1.0f, 0.0f, 0.0f}, { 0.0f, -1.0f, 0.0f}, { 0.0f, 0.0f, 1.0f}, { 0.0f, 0.0f, -1.0f} }; static S32 faces[6][4] = { {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} }; glBegin(GL_QUADS); glNormal3fv(&normals[which_face][0]); glTexCoord2f(1,0); glVertex3fv(&mVertex[ faces[which_face][0] ][0]); glTexCoord2f(1,1); glVertex3fv(&mVertex[ faces[which_face][1] ][0]); glTexCoord2f(0,1); glVertex3fv(&mVertex[ faces[which_face][2] ][0]); glTexCoord2f(0,0); glVertex3fv(&mVertex[ faces[which_face][3] ][0]); glEnd(); } void LLBox::render() { // This is a flattend representation of the box as render here // . // (-++) (+++) /|\t // +------------+ | (texture coordinates) // |2 1| | // | 4 | (*) --->s // | TOP | // | | // (-++) (--+)|3 0|(+-+) (+++) (-++) // +------------+------------+------------+------------+ // |2 1|2 1|2 1|2 1| // | 0 | 1 | 2 | 3 | // | BACK | RIGHT | FRONT | LEFT | // | | | | | // |3 0|3 0|3 0|3 0| // +------------+------------+------------+------------+ // (-+-) (---)|2 1|(+--) (++-) (-+-) // | 5 | // | BOTTOM | // | | // |3 0| // +------------+ // (-+-) (++-) renderface(5); renderface(4); renderface(3); renderface(2); renderface(1); renderface(0); }