summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llrender')
-rw-r--r--indra/llrender/llfontgl.cpp4
-rw-r--r--indra/llrender/llrendertarget.cpp26
-rw-r--r--indra/llrender/llrendertarget.h7
3 files changed, 7 insertions, 30 deletions
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 9ba0cfc6b8..a28ffbfdc0 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -446,7 +446,9 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars
// for the last character we want to measure the greater of its width and xadvance values
// so keep track of the difference between these values for the each character we measure
// so we can fix things up at the end
- width_padding = llmax(0.f, (F32)fgi->mWidth - advance);
+ width_padding = llmax( 0.f, // always use positive padding amount
+ width_padding - advance, // previous padding left over after advance of current character
+ (F32)(fgi->mWidth + fgi->mXBearing) - advance); // difference between width of this character and advance to next character
cur_x += advance;
llwchar next_char = wchars[i+1];
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index bab5cfd56e..d9520b3bf6 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -61,11 +61,8 @@ BOOL LLRenderTarget::sUseFBO = FALSE;
LLRenderTarget::LLRenderTarget() :
mResX(0),
mResY(0),
- mViewportWidth(0),
- mViewportHeight(0),
mTex(0),
mFBO(0),
- mColorFmt(0),
mDepth(0),
mStencil(0),
mUseDepth(FALSE),
@@ -92,15 +89,10 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth, BOO
stop_glerror();
mResX = resx;
mResY = resy;
- // default viewport to entire texture
- mViewportWidth = mResX;
- mViewportHeight = mResY;
mStencil = stencil;
mUsage = usage;
mUseDepth = depth;
- mFBO = 0;
- mColorFmt = color_fmt;
release();
@@ -320,7 +312,7 @@ void LLRenderTarget::bindTarget()
}
}
- glViewport(0, 0, mViewportWidth, mViewportHeight);
+ glViewport(0, 0, mResX, mResY);
sBoundTarget = this;
}
@@ -523,18 +515,12 @@ BOOL LLRenderTarget::isComplete() const
return (!mTex.empty() || mDepth) ? TRUE : FALSE;
}
-void LLRenderTarget::setViewport(U32 width, U32 height)
-{
- mViewportWidth = llmin(width, mResX);
- mViewportHeight = llmin(height, mResY);
-}
-
void LLRenderTarget::getViewport(S32* viewport)
{
viewport[0] = 0;
viewport[1] = 0;
- viewport[2] = mViewportWidth;
- viewport[3] = mViewportHeight;
+ viewport[2] = mResX;
+ viewport[3] = mResY;
}
//==================================================
@@ -595,7 +581,7 @@ void LLMultisampleBuffer::bindTarget(LLRenderTarget* ref)
check_framebuffer_status();
- glViewport(0, 0, mViewportWidth, mViewportHeight);
+ glViewport(0, 0, mResX, mResY);
sBoundTarget = this;
}
@@ -610,14 +596,10 @@ void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth
stop_glerror();
mResX = resx;
mResY = resy;
- mViewportWidth = mResX;
- mViewportHeight = mResY;
mUsage = usage;
mUseDepth = depth;
mStencil = stencil;
- mFBO = 0;
- mColorFmt = color_fmt;
releaseSampleBuffer();
diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h
index 125747424c..b7ebfc8f7f 100644
--- a/indra/llrender/llrendertarget.h
+++ b/indra/llrender/llrendertarget.h
@@ -107,9 +107,6 @@ public:
//uses scissor rect if in copy-to-texture mode
void clear(U32 mask = 0xFFFFFFFF);
- // override default viewport to a smaller size
- void setViewport(U32 width, U32 height);
-
//get applied viewport
void getViewport(S32* viewport);
@@ -153,16 +150,12 @@ protected:
friend class LLMultisampleBuffer;
U32 mResX;
U32 mResY;
- U32 mViewportWidth;
- U32 mViewportHeight;
std::vector<U32> mTex;
U32 mFBO;
- U32 mColorFmt;
U32 mDepth;
BOOL mStencil;
BOOL mUseDepth;
BOOL mRenderDepth;
-
LLTexUnit::eTextureType mUsage;
U32 mSamples;
LLMultisampleBuffer* mSampleBuffer;