diff options
| author | Ansariel Hiller <Ansariel@users.noreply.github.com> | 2024-09-18 16:09:51 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-18 17:09:51 +0300 | 
| commit | d9da5bbb33ce70e3bc799ba6696c8b10de0e5f04 (patch) | |
| tree | 7ac1243cb80d1d11b228508607073b01dce0f88f /indra/llrender | |
| parent | 83cf25af8d05897986cfbcf27224bf69fe7544c6 (diff) | |
Remove quads rendering mode entirely (#2593)
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llfontgl.cpp | 43 | ||||
| -rw-r--r-- | indra/llrender/llfontgl.h | 2 | ||||
| -rw-r--r-- | indra/llrender/llrender.cpp | 212 | ||||
| -rw-r--r-- | indra/llrender/llrender.h | 2 | ||||
| -rw-r--r-- | indra/llrender/llrender2dutils.cpp | 62 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 11 | 
6 files changed, 97 insertions, 235 deletions
| diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 9721b020c7..21593b7cb4 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -271,9 +271,9 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons      const LLFontGlyphInfo* next_glyph = NULL;      static constexpr S32 GLYPH_BATCH_SIZE = 30; -    static thread_local LLVector3 vertices[GLYPH_BATCH_SIZE * 4]; -    static thread_local LLVector2 uvs[GLYPH_BATCH_SIZE * 4]; -    static thread_local LLColor4U colors[GLYPH_BATCH_SIZE * 4]; +    static thread_local LLVector3 vertices[GLYPH_BATCH_SIZE * 6]; +    static thread_local LLVector2 uvs[GLYPH_BATCH_SIZE * 6]; +    static thread_local LLColor4U colors[GLYPH_BATCH_SIZE * 6];      LLColor4U text_color(color);      // Preserve the transparency to render fading emojis in fading text (e.g. @@ -305,9 +305,9 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons              // otherwise the queued glyphs will be taken from wrong textures.              if (glyph_count > 0)              { -                gGL.begin(LLRender::QUADS); +                gGL.begin(LLRender::TRIANGLES);                  { -                    gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4); +                    gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 6);                  }                  gGL.end();                  glyph_count = 0; @@ -338,9 +338,9 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons          if (glyph_count >= GLYPH_BATCH_SIZE)          { -            gGL.begin(LLRender::QUADS); +            gGL.begin(LLRender::TRIANGLES);              { -                gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4); +                gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 6);              }              gGL.end(); @@ -376,9 +376,9 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons          cur_render_y = cur_y;      } -    gGL.begin(LLRender::QUADS); +    gGL.begin(LLRender::TRIANGLES);      { -        gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4); +        gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 6);      }      gGL.end(); @@ -1227,7 +1227,7 @@ LLFontGL &LLFontGL::operator=(const LLFontGL &source)      return *this;  } -void LLFontGL::renderQuad(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const +void LLFontGL::renderTriangle(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const  {      S32 index = 0; @@ -1246,6 +1246,17 @@ void LLFontGL::renderQuad(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* c      colors_out[index] = color;      index++; + +    vertex_out[index] = LLVector3(screen_rect.mRight, screen_rect.mTop, 0.f); +    uv_out[index] = LLVector2(uv_rect.mRight, uv_rect.mTop); +    colors_out[index] = color; +    index++; + +    vertex_out[index] = LLVector3(screen_rect.mLeft, screen_rect.mBottom, 0.f); +    uv_out[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom); +    colors_out[index] = color; +    index++; +      vertex_out[index] = LLVector3(screen_rect.mRight, screen_rect.mBottom, 0.f);      uv_out[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);      colors_out[index] = color; @@ -1265,7 +1276,7 @@ void LLFontGL::drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_              LLRectf screen_rect_offset = screen_rect;              screen_rect_offset.translate((F32)(pass * BOLD_OFFSET), 0.f); -            renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_offset, uv_rect, color, slant_offset); +            renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect_offset, uv_rect, color, slant_offset);              glyph_count++;          }      } @@ -1296,10 +1307,10 @@ void LLFontGL::drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_                  break;              } -            renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_offset, uv_rect, shadow_color, slant_offset); +            renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect_offset, uv_rect, shadow_color, slant_offset);              glyph_count++;          } -        renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset); +        renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect, uv_rect, color, slant_offset);          glyph_count++;      }      else if (shadow == DROP_SHADOW) @@ -1308,14 +1319,14 @@ void LLFontGL::drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_          shadow_color.mV[VALPHA] = U8(color.mV[VALPHA] * drop_shadow_strength);          LLRectf screen_rect_shadow = screen_rect;          screen_rect_shadow.translate(1.f, -1.f); -        renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_shadow, uv_rect, shadow_color, slant_offset); +        renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect_shadow, uv_rect, shadow_color, slant_offset);          glyph_count++; -        renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset); +        renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect, uv_rect, color, slant_offset);          glyph_count++;      }      else // normal rendering      { -        renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset); +        renderTriangle(&vertex_out[glyph_count * 6], &uv_out[glyph_count * 6], &colors_out[glyph_count * 6], screen_rect, uv_rect, color, slant_offset);          glyph_count++;      }  } diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index de7529a583..f04a77b49c 100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h @@ -238,7 +238,7 @@ private:      LLFontDescriptor mFontDescriptor;      LLPointer<LLFontFreetype> mFontFreetype; -    void renderQuad(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const; +    void renderTriangle(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const;      void drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, U8 style, ShadowType shadow, F32 drop_shadow_fade) const;      // Registry holds all instantiated fonts. diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 16a8309a9a..f432b09107 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -803,7 +803,6 @@ void LLLightState::setSpotDirection(const LLVector3& direction)  LLRender::LLRender()    : mDirty(false),      mCount(0), -    mQuadCycle(0),      mMode(LLRender::TRIANGLES),      mCurrTextureUnitIndex(0)  { @@ -1532,13 +1531,7 @@ void LLRender::begin(const GLuint& mode)  {      if (mode != mMode)      { -        if (mode == LLRender::QUADS) -        { -            mQuadCycle = 1; -        } - -        if (mMode == LLRender::QUADS || -            mMode == LLRender::LINES || +        if (mMode == LLRender::LINES ||              mMode == LLRender::TRIANGLES ||              mMode == LLRender::POINTS)          { @@ -1561,8 +1554,7 @@ void LLRender::end()          //IMM_ERRS << "GL begin and end called with no vertices specified." << LL_ENDL;      } -    if ((mMode != LLRender::QUADS && -        mMode != LLRender::LINES && +    if ((mMode != LLRender::LINES &&          mMode != LLRender::TRIANGLES &&          mMode != LLRender::POINTS) ||          mCount > 2048) @@ -1587,28 +1579,19 @@ void LLRender::flush()          //store mCount in a local variable to avoid re-entrance (drawArrays may call flush)          U32 count = mCount; -            if (mMode == LLRender::QUADS && !sGLCoreProfile) -            { -                if (mCount%4 != 0) -                { -                count -= (mCount % 4); -                LL_WARNS() << "Incomplete quad requested." << LL_ENDL; -                } -            } - -            if (mMode == LLRender::TRIANGLES) +        if (mMode == LLRender::TRIANGLES) +        { +            if (mCount%3 != 0)              { -                if (mCount%3 != 0) -                { -                count -= (mCount % 3); -                LL_WARNS() << "Incomplete triangle requested." << LL_ENDL; -                } +            count -= (mCount % 3); +            LL_WARNS() << "Incomplete triangle requested." << LL_ENDL;              } +        } -            if (mMode == LLRender::LINES) +        if (mMode == LLRender::LINES) +        { +            if (mCount%2 != 0)              { -                if (mCount%2 != 0) -                {                  count -= (mCount % 2);                  LL_WARNS() << "Incomplete line requested." << LL_ENDL;              } @@ -1758,16 +1741,7 @@ LLVertexBuffer* LLRender::genBuffer(U32 attribute_mask, S32 count)  void LLRender::drawBuffer(LLVertexBuffer* vb, U32 mode, S32 count)  {      vb->setBuffer(); - -    if (mode == LLRender::QUADS && sGLCoreProfile) -    { -        vb->drawArrays(LLRender::TRIANGLES, 0, count); -        mQuadCycle = 1; -    } -    else -    { -        vb->drawArrays(mode, 0, count); -    } +    vb->drawArrays(mode, 0, count);  }  void LLRender::resetStriders(S32 count) @@ -1788,7 +1762,6 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)          {              case LLRender::POINTS: flush(); break;              case LLRender::TRIANGLES: if (mCount%3==0) flush(); break; -            case LLRender::QUADS: if(mCount%4 == 0) flush(); break;              case LLRender::LINES: if (mCount%2 == 0) flush(); break;          }      } @@ -1809,25 +1782,6 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)          mVerticesp[mCount] = vert;      } -    if (mMode == LLRender::QUADS && LLRender::sGLCoreProfile) -    { -        mQuadCycle++; -        if (mQuadCycle == 4) -        { //copy two vertices so fourth quad element will add a triangle -            mQuadCycle = 0; - -            mCount++; -            mVerticesp[mCount] = mVerticesp[mCount-3]; -            mColorsp[mCount] = mColorsp[mCount-3]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-3]; - -            mCount++; -            mVerticesp[mCount] = mVerticesp[mCount-2]; -            mColorsp[mCount] = mColorsp[mCount-2]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-2]; -        } -    } -      mCount++;      mVerticesp[mCount] = mVerticesp[mCount-1];      mColorsp[mCount] = mColorsp[mCount-1]; @@ -1842,50 +1796,13 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)          return;      } -    if (sGLCoreProfile && mMode == LLRender::QUADS) -    { //quads are deprecated, convert to triangle list -        S32 i = 0; - -        while (i < vert_count) -        { -            //read first three -            mVerticesp[mCount++] = verts[i++]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount++] = verts[i++]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount++] = verts[i++]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            //copy two -            mVerticesp[mCount++] = verts[i-3]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount++] = verts[i-1]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            //copy last one -            mVerticesp[mCount++] = verts[i++]; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; -        } -    } -    else +    for (S32 i = 0; i < vert_count; i++)      { -        for (S32 i = 0; i < vert_count; i++) -        { -            mVerticesp[mCount] = verts[i]; +        mVerticesp[mCount] = verts[i]; -            mCount++; -            mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; -        } +        mCount++; +        mTexcoordsp[mCount] = mTexcoordsp[mCount-1]; +        mColorsp[mCount] = mColorsp[mCount-1];      }      if( mCount > 0 ) // ND: Guard against crashes if mCount is zero, yes it can happen @@ -1900,50 +1817,13 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 v          return;      } -    if (sGLCoreProfile && mMode == LLRender::QUADS) -    { //quads are deprecated, convert to triangle list -        S32 i = 0; - -        while (i < vert_count) -        { -            //read first three -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount++] = uvs[i++]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount++] = uvs[i++]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount++] = uvs[i++]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            //copy last two -            mVerticesp[mCount] = verts[i-3]; -            mTexcoordsp[mCount++] = uvs[i-3]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            mVerticesp[mCount] = verts[i-1]; -            mTexcoordsp[mCount++] = uvs[i-1]; -            mColorsp[mCount] = mColorsp[mCount-1]; - -            //copy last one -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount++] = uvs[i++]; -            mColorsp[mCount] = mColorsp[mCount-1]; -        } -    } -    else +    for (S32 i = 0; i < vert_count; i++)      { -        for (S32 i = 0; i < vert_count; i++) -        { -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; +        mVerticesp[mCount] = verts[i]; +        mTexcoordsp[mCount] = uvs[i]; -            mCount++; -            mColorsp[mCount] = mColorsp[mCount-1]; -        } +        mCount++; +        mColorsp[mCount] = mColorsp[mCount-1];      }      if (mCount > 0) @@ -1961,51 +1841,13 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLCol          return;      } - -    if (sGLCoreProfile && mMode == LLRender::QUADS) -    { //quads are deprecated, convert to triangle list -        S32 i = 0; - -        while (i < vert_count) -        { -            //read first three -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; -            mColorsp[mCount++] = colors[i++]; - -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; -            mColorsp[mCount++] = colors[i++]; - -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; -            mColorsp[mCount++] = colors[i++]; - -            //copy last two -            mVerticesp[mCount] = verts[i-3]; -            mTexcoordsp[mCount] = uvs[i-3]; -            mColorsp[mCount++] = colors[i-3]; - -            mVerticesp[mCount] = verts[i-1]; -            mTexcoordsp[mCount] = uvs[i-1]; -            mColorsp[mCount++] = colors[i-1]; - -            //copy last one -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; -            mColorsp[mCount++] = colors[i++]; -        } -    } -    else +    for (S32 i = 0; i < vert_count; i++)      { -        for (S32 i = 0; i < vert_count; i++) -        { -            mVerticesp[mCount] = verts[i]; -            mTexcoordsp[mCount] = uvs[i]; -            mColorsp[mCount] = colors[i]; +        mVerticesp[mCount] = verts[i]; +        mTexcoordsp[mCount] = uvs[i]; +        mColorsp[mCount] = colors[i]; -            mCount++; -        } +        mCount++;      }      if (mCount > 0) diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 2645597b1a..2c1417cc26 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -319,7 +319,6 @@ public:          POINTS,          LINES,          LINE_STRIP, -        QUADS,          LINE_LOOP,          NUM_MODES      }; @@ -508,7 +507,6 @@ private:      LLColor4 mAmbientLightColor;      bool            mDirty; -    U32             mQuadCycle;      U32             mCount;      U32             mMode;      U32             mCurrTextureUnitIndex; diff --git a/indra/llrender/llrender2dutils.cpp b/indra/llrender/llrender2dutils.cpp index 27da64cce6..e488082c7e 100644 --- a/indra/llrender/llrender2dutils.cpp +++ b/indra/llrender/llrender2dutils.cpp @@ -175,50 +175,70 @@ void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &st      LLColor4 end_color = start_color;      end_color.mV[VALPHA] = 0.f; -    gGL.begin(LLRender::QUADS); +    gGL.begin(LLRender::TRIANGLES);      // Right edge, CCW faces screen      gGL.color4fv(start_color.mV); -    gGL.vertex2i(right,     top-lines); -    gGL.vertex2i(right,     bottom); +    gGL.vertex2i(right, top - lines); +    gGL.vertex2i(right, bottom);      gGL.color4fv(end_color.mV); -    gGL.vertex2i(right+lines, bottom); -    gGL.vertex2i(right+lines, top-lines); +    gGL.vertex2i(right + lines, bottom); +    gGL.color4fv(start_color.mV); +    gGL.vertex2i(right, top - lines); +    gGL.color4fv(end_color.mV); +    gGL.vertex2i(right + lines, bottom); +    gGL.vertex2i(right + lines, top - lines);      // Bottom edge, CCW faces screen      gGL.color4fv(start_color.mV); -    gGL.vertex2i(right,     bottom); -    gGL.vertex2i(left+lines,    bottom); +    gGL.vertex2i(right, bottom); +    gGL.vertex2i(left + lines, bottom);      gGL.color4fv(end_color.mV); -    gGL.vertex2i(left+lines,    bottom-lines); -    gGL.vertex2i(right,     bottom-lines); +    gGL.vertex2i(left + lines, bottom - lines); +    gGL.color4fv(start_color.mV); +    gGL.vertex2i(right, bottom); +    gGL.color4fv(end_color.mV); +    gGL.vertex2i(left + lines, bottom - lines); +    gGL.vertex2i(right, bottom - lines);      // bottom left Corner      gGL.color4fv(start_color.mV); -    gGL.vertex2i(left+lines,    bottom); +    gGL.vertex2i(left + lines, bottom);      gGL.color4fv(end_color.mV); -    gGL.vertex2i(left,      bottom); +    gGL.vertex2i(left, bottom);      // make the bottom left corner not sharp -    gGL.vertex2i(left+1,        bottom-lines+1); -    gGL.vertex2i(left+lines,    bottom-lines); +    gGL.vertex2i(left + 1, bottom - lines + 1); +    gGL.color4fv(start_color.mV); +    gGL.vertex2i(left + lines, bottom); +    gGL.color4fv(end_color.mV); +    gGL.vertex2i(left + 1, bottom - lines + 1); +    gGL.vertex2i(left + lines, bottom - lines);      // bottom right corner      gGL.color4fv(start_color.mV); -    gGL.vertex2i(right,     bottom); +    gGL.vertex2i(right, bottom);      gGL.color4fv(end_color.mV); -    gGL.vertex2i(right,     bottom-lines); +    gGL.vertex2i(right, bottom - lines);      // make the rightmost corner not sharp -    gGL.vertex2i(right+lines-1, bottom-lines+1); -    gGL.vertex2i(right+lines,   bottom); +    gGL.vertex2i(right + lines - 1, bottom - lines + 1); +    gGL.color4fv(start_color.mV); +    gGL.vertex2i(right, bottom); +    gGL.color4fv(end_color.mV); +    gGL.vertex2i(right + lines - 1, bottom - lines + 1); +    gGL.vertex2i(right + lines, bottom);      // top right corner      gGL.color4fv(start_color.mV); -    gGL.vertex2i( right,            top-lines ); +    gGL.vertex2i(right, top - lines);      gGL.color4fv(end_color.mV); -    gGL.vertex2i( right+lines,  top-lines ); +    gGL.vertex2i(right + lines, top - lines);      // make the corner not sharp -    gGL.vertex2i( right+lines-1,    top-1 ); -    gGL.vertex2i( right,            top ); +    gGL.vertex2i(right + lines - 1, top - 1); +    gGL.color4fv(start_color.mV); +    gGL.vertex2i(right, top - lines); +    gGL.color4fv(end_color.mV); +    gGL.vertex2i(right + lines - 1, top - 1); +    gGL.vertex2i(right, top);      gGL.end();      stop_glerror(); diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 0be799db9d..6f4828397a 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -633,15 +633,7 @@ void LLVertexBufferData::draw()      gGL.loadMatrix(glm::value_ptr(mTexture0));      mVB->setBuffer(); - -    if (mMode == LLRender::QUADS && LLRender::sGLCoreProfile) -    { -        mVB->drawArrays(LLRender::TRIANGLES, 0, mCount); -    } -    else -    { -        mVB->drawArrays(mMode, 0, mCount); -    } +    mVB->drawArrays(mMode, 0, mCount);      gGL.popMatrix();      gGL.matrixMode(LLRender::MM_PROJECTION); @@ -714,7 +706,6 @@ const U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =      GL_POINTS,      GL_LINES,      GL_LINE_STRIP, -    GL_QUADS,      GL_LINE_LOOP,  }; | 
