summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2008-05-06 18:09:03 +0000
committerSteven Bennetts <steve@lindenlab.com>2008-05-06 18:09:03 +0000
commit068da0b5655fc3c735cd8019ab3b6bb0defec4c0 (patch)
tree143580a4ff29c4c4df91c41e1429add4abaa3f87 /indra/newview
parenteb14fece837683ebc58540d7f10eb74f5a5fbd4e (diff)
merge release-QAR-511 Viewer 1.20 RC 5
merge Branch_1-20-Viewer -r 85828 : 86279 -> release
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/settings.xml8
-rw-r--r--indra/newview/gpu_table.txt1
-rw-r--r--indra/newview/lldrawpoolalpha.cpp4
-rw-r--r--indra/newview/llface.cpp3
-rw-r--r--indra/newview/llfloateranimpreview.cpp64
-rw-r--r--indra/newview/llfloateranimpreview.h3
-rw-r--r--indra/newview/llfloatertools.cpp2
-rw-r--r--indra/newview/llselectmgr.cpp1
-rw-r--r--indra/newview/llspatialpartition.cpp2
-rw-r--r--indra/newview/llviewerdisplay.cpp6
-rw-r--r--indra/newview/llviewerobject.cpp9
-rw-r--r--indra/newview/llviewerwindow.cpp61
-rw-r--r--indra/newview/llvoicevisualizer.cpp3
-rw-r--r--indra/newview/pipeline.cpp14
14 files changed, 110 insertions, 71 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index e954d97310..f1e4b39d7d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2855,7 +2855,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <string>0</string>
+ <integer>0</integer>
</map>
<key>JoystickFlycamEnabled</key>
<map>
@@ -6089,9 +6089,9 @@
<string>Color4</string>
<key>Value</key>
<array>
- <real>0.819999992847442626953125</real>
- <real>0.819999992847442626953125</real>
- <real>0.9900000095367431640625</real>
+ <real>0.8235294117</real>
+ <real>0.2745098039</real>
+ <real>0.2745098039</real>
<real>1</real>
</array>
</map>
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 842e1afaad..f0b0f0c514 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -195,6 +195,7 @@ NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1
NVIDIA GeForce PCX .*GeForce PCX.* 0 1
NVIDIA Generic .*NVIDIA.*Unknown.* 0 0
NVIDIA NV43 .*NVIDIA.*NV43.* 1 1
+NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1
NVIDIA Quadro2 .*Quadro2.* 0 1
NVIDIA Quadro4 .*Quadro4.* 0 1
NVIDIA Quadro DCC .*Quadro DCC.* 0 1
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 795f6bc396..09901984c4 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -149,10 +149,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask)
{
-#if !LL_RELEASE_FOR_DOWNLOAD
- LLGLState::checkClientArrays(mask);
-#endif
-
for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i)
{
LLSpatialGroup* group = *i;
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 5a683c4c2e..3ced3541d2 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -411,7 +411,8 @@ void LLFace::renderForSelect(U32 data_mask)
void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color)
{
- if(mDrawablep.isNull() || mVertexBuffer.isNull())
+ if(mDrawablep.isNull() || mVertexBuffer.isNull() || mDrawablep->getSpatialGroup() == NULL ||
+ mDrawablep->getSpatialGroup()->isState(LLSpatialGroup::GEOM_DIRTY))
{
return;
}
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index aba92791e0..c2495e4037 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -114,6 +114,34 @@ LLFloaterAnimPreview::LLFloaterAnimPreview(const char* filename) :
}
//-----------------------------------------------------------------------------
+// setAnimCallbacks()
+//-----------------------------------------------------------------------------
+void LLFloaterAnimPreview::setAnimCallbacks()
+{
+ childSetCommitCallback("playback_slider", onSliderMove, this);
+
+ childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this);
+ childSetValue("preview_base_anim", "Standing");
+
+ childSetCommitCallback("priority", onCommitPriority, this);
+ childSetCommitCallback("loop_check", onCommitLoop, this);
+ childSetCommitCallback("loop_in_point", onCommitLoopIn, this);
+ childSetValidate("loop_in_point", validateLoopIn);
+ childSetCommitCallback("loop_out_point", onCommitLoopOut, this);
+ childSetValidate("loop_out_point", validateLoopOut);
+
+ childSetCommitCallback("hand_pose_combo", onCommitHandPose, this);
+
+ childSetCommitCallback("emote_combo", onCommitEmote, this);
+ childSetValue("emote_combo", "[None]");
+
+ childSetCommitCallback("ease_in_time", onCommitEaseIn, this);
+ childSetValidate("ease_in_time", validateEaseIn);
+ childSetCommitCallback("ease_out_time", onCommitEaseOut, this);
+ childSetValidate("ease_out_time", validateEaseOut);
+}
+
+//-----------------------------------------------------------------------------
// postBuild()
//-----------------------------------------------------------------------------
BOOL LLFloaterAnimPreview::postBuild()
@@ -172,29 +200,29 @@ BOOL LLFloaterAnimPreview::postBuild()
mStopButton->setScaleImage(TRUE);
r.set(r.mRight + PREVIEW_HPAD, y, getRect().getWidth() - PREVIEW_HPAD, y - BTN_HEIGHT);
- childSetCommitCallback("playback_slider", onSliderMove, this);
+ //childSetCommitCallback("playback_slider", onSliderMove, this);
childHide("bad_animation_text");
- childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this);
- childSetValue("preview_base_anim", "Standing");
+ //childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this);
+ //childSetValue("preview_base_anim", "Standing");
- childSetCommitCallback("priority", onCommitPriority, this);
- childSetCommitCallback("loop_check", onCommitLoop, this);
- childSetCommitCallback("loop_in_point", onCommitLoopIn, this);
- childSetValidate("loop_in_point", validateLoopIn);
- childSetCommitCallback("loop_out_point", onCommitLoopOut, this);
- childSetValidate("loop_out_point", validateLoopOut);
+ //childSetCommitCallback("priority", onCommitPriority, this);
+ //childSetCommitCallback("loop_check", onCommitLoop, this);
+ //childSetCommitCallback("loop_in_point", onCommitLoopIn, this);
+ //childSetValidate("loop_in_point", validateLoopIn);
+ //childSetCommitCallback("loop_out_point", onCommitLoopOut, this);
+ //childSetValidate("loop_out_point", validateLoopOut);
- childSetCommitCallback("hand_pose_combo", onCommitHandPose, this);
+ //childSetCommitCallback("hand_pose_combo", onCommitHandPose, this);
- childSetCommitCallback("emote_combo", onCommitEmote, this);
- childSetValue("emote_combo", "[None]");
+ //childSetCommitCallback("emote_combo", onCommitEmote, this);
+ //childSetValue("emote_combo", "[None]");
- childSetCommitCallback("ease_in_time", onCommitEaseIn, this);
- childSetValidate("ease_in_time", validateEaseIn);
- childSetCommitCallback("ease_out_time", onCommitEaseOut, this);
- childSetValidate("ease_out_time", validateEaseOut);
+ //childSetCommitCallback("ease_in_time", onCommitEaseIn, this);
+ //childSetValidate("ease_in_time", validateEaseIn);
+ //childSetCommitCallback("ease_out_time", onCommitEaseOut, this);
+ //childSetValidate("ease_out_time", validateEaseOut);
if (!stricmp(strrchr(mFilename.c_str(), '.'), ".bvh"))
{
@@ -254,6 +282,8 @@ BOOL LLFloaterAnimPreview::postBuild()
if (success)
{
+ setAnimCallbacks() ;
+
const LLBBoxLocal &pelvis_bbox = motionp->getPelvisBBox();
LLVector3 temp = pelvis_bbox.getCenter();
@@ -314,7 +344,7 @@ BOOL LLFloaterAnimPreview::postBuild()
}
}
- setEnabled(FALSE);
+ //setEnabled(FALSE);
mMotionID.setNull();
mAnimPreview = NULL;
}
diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h
index e2383c57e8..cbfba0c43e 100644
--- a/indra/newview/llfloateranimpreview.h
+++ b/indra/newview/llfloateranimpreview.h
@@ -106,6 +106,9 @@ public:
LLAssetType::EType type,
void* user_data,
S32 status, LLExtStat ext_status);
+private:
+ void setAnimCallbacks() ;
+
protected:
void draw();
void resetMotion();
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 55be7a199c..b8f7e3ed0a 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -776,7 +776,7 @@ void LLFloaterTools::onClose(bool app_quitting)
setVisible(FALSE);
mTab->setVisible(FALSE);
- LLViewerJoystick::getInstance()->moveAvatar(true);
+ LLViewerJoystick::getInstance()->moveAvatar(false);
// Different from handle_reset_view in that it doesn't actually
// move the camera if EditCameraMovement is not set.
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index abda5067e5..5eacb25ded 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -158,6 +158,7 @@ static LLPointer<LLObjectSelection> sNullSelection;
void LLSelectMgr::cleanupGlobals()
{
sNullSelection = NULL;
+ LLSelectMgr::getInstance()->clearSelections();
}
LLObjectSelection *get_null_object_selection()
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 59fa2c4bcc..b7cdf04de7 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -2421,7 +2421,7 @@ public:
{
LLSpatialGroup* group = (LLSpatialGroup*) branch->getListener(0);
- if (mCamera && !mCamera->AABBInFrustumNoFarClip(group->mBounds[0], group->mBounds[1]))
+ if (group->isState(LLSpatialGroup::GEOM_DIRTY) || (mCamera && !mCamera->AABBInFrustumNoFarClip(group->mBounds[0], group->mBounds[1])))
{
return;
}
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 583139298f..152c614c08 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -545,8 +545,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
BOOL to_texture = !for_snapshot &&
gPipeline.canUseVertexShaders() &&
- LLPipeline::sRenderGlow &&
- gGLManager.mHasFramebufferObject;
+ LLPipeline::sRenderGlow;
// now do the swap buffer (just before rendering to framebuffer)
{ //swap and flush state from previous frame
@@ -893,8 +892,7 @@ void render_ui_and_swap()
{
BOOL to_texture = gPipeline.canUseVertexShaders() &&
- LLPipeline::sRenderGlow &&
- gGLManager.mHasFramebufferObject;
+ LLPipeline::sRenderGlow;
if (to_texture)
{
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 227a0d9ebe..af662d92aa 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -1861,9 +1861,14 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
if (new_rot != mLastRot
|| new_angv != old_angv)
{
- mLastRot = new_rot;
+ if (new_rot != mLastRot)
+ {
+ mLastRot = new_rot;
+ setRotation(new_rot);
+ }
+
setChanged(ROTATED | SILHOUETTE);
- setRotation(new_rot);
+
resetRot();
}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b3f8c6d5eb..e403df7f45 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1684,7 +1684,7 @@ void LLViewerWindow::initBase()
F32 gamma = gSavedSettings.getF32("RenderGamma");
if (gamma != 0.0f)
{
- gViewerWindow->getWindow()->setGamma(gamma);
+ getWindow()->setGamma(gamma);
}
// Create global views
@@ -1953,7 +1953,7 @@ void LLViewerWindow::initWorldUI()
// Status bar
S32 menu_bar_height = gMenuBarView->getRect().getHeight();
- LLRect root_rect = gViewerWindow->getRootView()->getRect();
+ LLRect root_rect = getRootView()->getRect();
LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height);
gStatusBar = new LLStatusBar("status", status_rect);
gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP);
@@ -1965,10 +1965,10 @@ void LLViewerWindow::initWorldUI()
LLFloaterChatterBox::createInstance(LLSD());
- gViewerWindow->getRootView()->addChild(gStatusBar);
+ getRootView()->addChild(gStatusBar);
// menu holder appears on top to get first pass at all mouse events
- gViewerWindow->getRootView()->sendChildToFront(gMenuHolder);
+ getRootView()->sendChildToFront(gMenuHolder);
}
}
@@ -2313,8 +2313,8 @@ void LLViewerWindow::draw()
int pos_y = sub_region / llceil(zoom_factor);
int pos_x = sub_region - (pos_y*llceil(zoom_factor));
// offset for this tile
- glTranslatef((F32)gViewerWindow->getWindowWidth() * -(F32)pos_x,
- (F32)gViewerWindow->getWindowHeight() * -(F32)pos_y,
+ glTranslatef((F32)getWindowWidth() * -(F32)pos_x,
+ (F32)getWindowHeight() * -(F32)pos_y,
0.f);
glScalef(zoom_factor, zoom_factor, 1.f);
LLUI::sGLScaleFactor *= zoom_factor;
@@ -2379,8 +2379,8 @@ void LLViewerWindow::draw()
const S32 DIST_FROM_TOP = 20;
LLFontGL::sSansSerifBig->renderUTF8(
mOverlayTitle, 0,
- llround( gViewerWindow->getWindowWidth() * 0.5f),
- gViewerWindow->getWindowHeight() - DIST_FROM_TOP,
+ llround( getWindowWidth() * 0.5f),
+ getWindowHeight() - DIST_FROM_TOP,
LLColor4(1, 1, 1, 0.4f),
LLFontGL::HCENTER, LLFontGL::TOP);
}
@@ -3534,8 +3534,8 @@ void LLViewerWindow::hitUIElementAsync(S32 x, S32 y_from_bot, MASK mask, void (*
// build orthogonal transform and picking viewport
// Perform pick on a PICK_DIAMETER x PICK_DIAMETER pixel region around cursor point.
// Don't limit the select distance for this pick.
- gViewerWindow->setup2DRender();
- const LLVector2& display_scale = gViewerWindow->getDisplayScale();
+ setup2DRender();
+ const LLVector2& display_scale = getDisplayScale();
glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@@ -3549,7 +3549,7 @@ void LLViewerWindow::hitUIElementAsync(S32 x, S32 y_from_bot, MASK mask, void (*
// Draw the objects so the user can select them.
// The starting ID is 1, since land is zero.
- //gViewerWindow->drawForSelect();
+ //drawForSelect();
stop_glerror();
@@ -3579,8 +3579,8 @@ void LLViewerWindow::performPick()
// find pick region that is fully onscreen
LLCoordGL scaled_pick_point = mPickPoint;
- scaled_pick_point.mX = llclamp(llround((F32)mPickPoint.mX * mDisplayScale.mV[VX]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayWidth() - PICK_HALF_WIDTH);
- scaled_pick_point.mY = llclamp(llround((F32)mPickPoint.mY * mDisplayScale.mV[VY]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayHeight() - PICK_HALF_WIDTH);
+ scaled_pick_point.mX = llclamp(llround((F32)mPickPoint.mX * mDisplayScale.mV[VX]), PICK_HALF_WIDTH, getWindowDisplayWidth() - PICK_HALF_WIDTH);
+ scaled_pick_point.mY = llclamp(llround((F32)mPickPoint.mY * mDisplayScale.mV[VY]), PICK_HALF_WIDTH, getWindowDisplayHeight() - PICK_HALF_WIDTH);
glReadPixels(scaled_pick_point.mX - PICK_HALF_WIDTH, scaled_pick_point.mY - PICK_HALF_WIDTH, PICK_DIAMETER, PICK_DIAMETER, GL_RGBA, GL_UNSIGNED_BYTE, mPickBuffer);
@@ -4152,7 +4152,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio
filepath += extension;
struct stat stat_info;
- err = gViewerWindow->mWindow->stat( filepath.c_str(), &stat_info );
+ err = mWindow->stat( filepath.c_str(), &stat_info );
i++;
}
while( -1 != err ); // search until the file is not found (i.e., stat() gives an error).
@@ -4177,6 +4177,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio
static S32 BORDERHEIGHT = 0;
static S32 BORDERWIDTH = 0;
+// static
void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
{
LLCoordScreen size;
@@ -4657,7 +4658,7 @@ void LLViewerWindow::drawMouselookInstructions()
LLRect instructions_rect;
instructions_rect.setLeftTopAndSize(
INSTRUCTIONS_PAD,
- gViewerWindow->getWindowHeight() - INSTRUCTIONS_PAD,
+ getWindowHeight() - INSTRUCTIONS_PAD,
font->getWidth( instructions ) + 2 * INSTRUCTIONS_PAD,
llround(font->getLineHeight() + 2 * INSTRUCTIONS_PAD));
@@ -4980,11 +4981,11 @@ void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height)
{
fullscreen = mWantFullscreen;
- if (gViewerWindow->mWindow
- && gViewerWindow->mWindow->getFullscreen() == mWantFullscreen)
+ if (mWindow
+ && mWindow->getFullscreen() == mWantFullscreen)
{
- width = gViewerWindow->getWindowDisplayWidth();
- height = gViewerWindow->getWindowDisplayHeight();
+ width = getWindowDisplayWidth();
+ height = getWindowDisplayHeight();
}
else if (mWantFullscreen)
{
@@ -5001,14 +5002,14 @@ void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height)
BOOL LLViewerWindow::checkSettings()
{
- BOOL is_fullscreen = gViewerWindow->mWindow->getFullscreen();
+ BOOL is_fullscreen = mWindow->getFullscreen();
if (is_fullscreen && !mWantFullscreen)
{
- gViewerWindow->changeDisplaySettings(FALSE,
- LLCoordScreen(gSavedSettings.getS32("WindowWidth"),
- gSavedSettings.getS32("WindowHeight")),
- TRUE,
- mShowFullscreenProgress);
+ changeDisplaySettings(FALSE,
+ LLCoordScreen(gSavedSettings.getS32("WindowWidth"),
+ gSavedSettings.getS32("WindowHeight")),
+ TRUE,
+ mShowFullscreenProgress);
return TRUE;
}
else if (!is_fullscreen && mWantFullscreen)
@@ -5022,11 +5023,11 @@ BOOL LLViewerWindow::checkSettings()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
#endif
- gViewerWindow->changeDisplaySettings(TRUE,
- LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"),
- gSavedSettings.getS32("FullScreenHeight")),
- gSavedSettings.getBOOL("DisableVerticalSync"),
- mShowFullscreenProgress);
+ changeDisplaySettings(TRUE,
+ LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"),
+ gSavedSettings.getS32("FullScreenHeight")),
+ gSavedSettings.getBOOL("DisableVerticalSync"),
+ mShowFullscreenProgress);
#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
index 38d435ff74..87f0ffdbee 100644
--- a/indra/newview/llvoicevisualizer.cpp
+++ b/indra/newview/llvoicevisualizer.cpp
@@ -369,7 +369,8 @@ void LLVoiceVisualizer::render()
//---------------------------------------------------------------
// some gl state
//---------------------------------------------------------------
- LLGLEnable blend( GL_BLEND );
+ LLGLSPipelineAlpha alpha_blend;
+ LLGLDepthTest depth(GL_TRUE, GL_FALSE);
//-------------------------------------------------------------
// create coordinates of the geometry for the dot
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 69f2a4c4b7..4f71e33af5 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1162,8 +1162,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
!hasRenderType(LLPipeline::RENDER_TYPE_HUD) &&
!sReflectionRender &&
gPipeline.canUseVertexShaders() &&
- sRenderGlow &&
- gGLManager.mHasFramebufferObject;
+ sRenderGlow;
if (to_texture)
{
@@ -1243,7 +1242,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
if (to_texture)
{
mScreen.flush();
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ LLRenderTarget::unbindTarget();
}
else if (LLPipeline::sUseOcclusion > 1)
{
@@ -2258,6 +2257,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
glEnableClientState(GL_VERTEX_ARRAY);
+ LLVertexBuffer::unbind();
+
// Do verification of GL state
#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
@@ -4462,8 +4463,7 @@ void LLPipeline::bindScreenToTexture()
void LLPipeline::renderBloom(BOOL for_snapshot)
{
if (!(gPipeline.canUseVertexShaders() &&
- sRenderGlow &&
- gGLManager.mHasFramebufferObject))
+ sRenderGlow))
{
return;
}
@@ -4862,6 +4862,8 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
{
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
{
+ LLVertexBuffer::unbind();
+
#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
@@ -5039,7 +5041,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
}
last_update = LLDrawPoolWater::sNeedsReflectionUpdate && LLDrawPoolWater::sNeedsDistortionUpdate;
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ LLRenderTarget::unbindTarget();
LLPipeline::sReflectionRender = FALSE;
if (!LLRenderTarget::sUseFBO)