summaryrefslogtreecommitdiff
path: root/indra/newview/llpatchvertexarray.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llpatchvertexarray.h
Print done when done.
Diffstat (limited to 'indra/newview/llpatchvertexarray.h')
-rw-r--r--indra/newview/llpatchvertexarray.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/indra/newview/llpatchvertexarray.h b/indra/newview/llpatchvertexarray.h
new file mode 100644
index 0000000000..5addfa57de
--- /dev/null
+++ b/indra/newview/llpatchvertexarray.h
@@ -0,0 +1,51 @@
+/**
+ * @file llpatchvertexarray.h
+ * @brief description of Surface class
+ *
+ * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLPATCHVERTEXARRAY_H
+#define LL_LLPATCHVERTEXARRAY_H
+
+// A LLPatchVertexArray is really just a structure of vertex arrays for
+// rendering a "patch" of a certain size.
+//
+// A "patch" is currently a sub-square of a larger square array of data
+// we call a "surface".
+class LLPatchVertexArray
+{
+public:
+ LLPatchVertexArray();
+ LLPatchVertexArray(U32 surface_width, U32 patch_width, F32 meters_per_grid);
+ virtual ~LLPatchVertexArray();
+
+ void create(U32 surface_width, U32 patch_width, F32 meters_per_grid);
+ void destroy();
+ void init();
+
+public:
+ U32 mSurfaceWidth; // grid points on one side of a LLSurface
+ U32 mPatchWidth; // grid points on one side of a LLPatch
+ U32 mPatchOrder; // 2^mPatchOrder >= mPatchWidth
+
+ U32 *mRenderLevelp; // Look-up table : render_stride -> render_level
+ U32 *mRenderStridep; // Look-up table : render_level -> render_stride
+
+ // We want to be able to render a patch from multiple resolutions.
+ // The lowest resolution has two triangles, and the highest has
+ // 2*mPatchWidth*mPatchWidth triangles.
+ //
+ // mPatchWidth is not hard-coded, so we don't know how much memory
+ // to allocate to the vertex arrays until it is set. Once it is
+ // set, we will calculate how much total memory to allocate for the
+ // vertex arrays, and then keep track of their lengths and locations
+ // in the memory bank.
+ //
+ // A Patch has three regions that need vertex arrays: middle, north,
+ // and east. For each region there are three items that must be
+ // kept track of: data, offset, and length.
+};
+
+#endif