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/lldrawpoolclouds.cpp |
Print done when done.
Diffstat (limited to 'indra/newview/lldrawpoolclouds.cpp')
-rw-r--r-- | indra/newview/lldrawpoolclouds.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/indra/newview/lldrawpoolclouds.cpp b/indra/newview/lldrawpoolclouds.cpp new file mode 100644 index 0000000000..c279f085d5 --- /dev/null +++ b/indra/newview/lldrawpoolclouds.cpp @@ -0,0 +1,87 @@ +/** + * @file lldrawpoolclouds.cpp + * @brief LLDrawPoolClouds class implementation + * + * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "lldrawpoolclouds.h" + +#include "llface.h" +#include "llsky.h" +#include "llviewercamera.h" +#include "llvoclouds.h" +#include "pipeline.h" + +LLDrawPoolClouds::LLDrawPoolClouds() : + LLDrawPool(POOL_CLOUDS, DATA_SIMPLE_IL_MASK, 0) +{ +} + +LLDrawPool *LLDrawPoolClouds::instancePool() +{ + return new LLDrawPoolClouds(); +} + +void LLDrawPoolClouds::enqueue(LLFace *facep) +{ + if (facep->isState(LLFace::BACKLIST)) + { + mMoveFace.put(facep); + } + else + { + mDrawFace.push_back(facep); + } + facep->mDistance = (facep->mCenterAgent - gCamera->getOrigin()) * gCamera->getAtAxis(); +} + +void LLDrawPoolClouds::beginRenderPass(S32 pass) +{ + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glEnableClientState(GL_NORMAL_ARRAY); +} + +void LLDrawPoolClouds::prerender() +{ + mVertexShaderLevel = gPipeline.getVertexShaderLevel(LLPipeline::SHADER_ENVIRONMENT); +} + +void LLDrawPoolClouds::render(S32 pass) +{ + LLFastTimer ftm(LLFastTimer::FTM_RENDER_CLOUDS); + if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))) + { + return; + } + + if (mDrawFace.empty()) + { + return; + } + + LLGLSPipelineAlpha gls_pipeline_alpha; + LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); + glAlphaFunc(GL_GREATER,0.01f); + + gPipeline.enableLightsFullbright(LLColor4(1.f,1.f,1.f)); + + mDrawFace[0]->bindTexture(); + + bindGLVertexPointer(); + bindGLTexCoordPointer(); + bindGLNormalPointer(); + + std::sort(mDrawFace.begin(), mDrawFace.end(), LLFace::CompareDistanceGreater()); + + drawLoop(); +} + + +void LLDrawPoolClouds::renderForSelect() +{ +} |