diff options
Diffstat (limited to 'indra/newview/lldrawpoolsky.cpp')
-rw-r--r-- | indra/newview/lldrawpoolsky.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 6b45c5abb0..7f7d9f65c6 100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -63,6 +63,8 @@ void LLDrawPoolSky::prerender() void LLDrawPoolSky::render(S32 pass) { + gGL.flush(); + if (mDrawFace.empty()) { return; @@ -74,11 +76,16 @@ void LLDrawPoolSky::render(S32 pass) return; } - // use a shader only underwater + // don't render sky under water (background just gets cleared to fog color) if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender) { - mShader = &gObjectFullbrightWaterProgram; - mShader->bind(); + return; + } + + + if (LLGLSLShader::sNoFixedFunction) + { //just use the UI shader (generic single texture no lighting) + gOneTextureNoColorProgram.bind(); } else { @@ -105,20 +112,21 @@ void LLDrawPoolSky::render(S32 pass) LLGLDisable clip(GL_CLIP_PLANE0); - glPushMatrix(); + gGL.pushMatrix(); LLVector3 origin = LLViewerCamera::getInstance()->getOrigin(); - glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); + gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]); S32 face_count = (S32)mDrawFace.size(); + LLVertexBuffer::unbind(); + gGL.diffuseColor4f(1,1,1,1); + for (S32 i = 0; i < llmin(6, face_count); ++i) { renderSkyCubeFace(i); } - LLGLEnable blend(GL_BLEND); - - glPopMatrix(); + gGL.popMatrix(); } void LLDrawPoolSky::renderSkyCubeFace(U8 side) @@ -136,9 +144,10 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) if (LLSkyTex::doInterpolate()) { + LLGLEnable blend(GL_BLEND); mSkyTex[side].bindTexture(FALSE); - glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled + gGL.diffuseColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled face.renderIndexed(); } } |