diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llbox.cpp |
Print done when done.
Diffstat (limited to 'indra/newview/llbox.cpp')
-rw-r--r-- | indra/newview/llbox.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/indra/newview/llbox.cpp b/indra/newview/llbox.cpp new file mode 100644 index 0000000000..3d5a6b6fea --- /dev/null +++ b/indra/newview/llbox.cpp @@ -0,0 +1,105 @@ +/** + * @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); +} |