diff options
author | Erik Kundiman <erik@megapahit.org> | 2023-09-06 16:25:16 +0800 |
---|---|---|
committer | Erik Kundiman <erik@megapahit.org> | 2023-09-06 16:25:16 +0800 |
commit | 79510a184bcd529db8da2afc7c8c6327f07167ef (patch) | |
tree | 0b9aae85aa90b33c3c3d6af7808e2217413147e9 | |
parent | 520fbfac5071f74d21e46b2f07dc0ed68b098903 (diff) |
Preprocess appearance GL fixed-function features
so non implementors won't try to compile the code.
-rw-r--r-- | indra/llappearance/lltexlayer.cpp | 28 | ||||
-rw-r--r-- | indra/llappearance/lltexlayerparams.cpp | 4 |
2 files changed, 32 insertions, 0 deletions
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index 6f23b2e04c..31a07e43ed 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -377,7 +377,9 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height, LLRenderTarget* // clear buffer area to ensure we don't pick up UI elements { gGL.flush(); +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gAlphaMaskProgram.setMinimumAlpha(0.0f); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gGL.color4f( 0.f, 0.f, 0.f, 1.f ); @@ -410,7 +412,9 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height, LLRenderTarget* gGL.flush(); gGL.setSceneBlendType(LLRender::BT_REPLACE); +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gAlphaMaskProgram.setMinimumAlpha(0.f); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -500,7 +504,9 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, { // Set the alpha channel to one (clean up after previous blending) gGL.flush(); +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gAlphaMaskProgram.setMinimumAlpha(0.f); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gGL.color4f( 0.f, 0.f, 0.f, 1.f ); @@ -1025,7 +1031,9 @@ void LLTexLayer::calculateTexLayerColor(const param_color_list_t ¶m_list, LL BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height, LLRenderTarget* bound_target) { +#if GL_VERSION_1_1 LLGLEnable color_mat(GL_COLOR_MATERIAL); +#endif // *TODO: Is this correct? //gPipeline.disableLights(); stop_glerror(); @@ -1112,7 +1120,9 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height, LLRenderTarget* bou if( tex ) { bool no_alpha_test = getInfo()->mWriteAllChannels; +#if GL_VERSION_1_1 LLGLDisable alpha_test(no_alpha_test ? GL_ALPHA_TEST : 0); +#endif if (no_alpha_test) { gAlphaMaskProgram.setMinimumAlpha(0.f); @@ -1162,7 +1172,9 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height, LLRenderTarget* bou getInfo()->mStaticImageFileName.empty() && color_specified ) { +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gAlphaMaskProgram.setMinimumAlpha(0.000f); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -1260,7 +1272,9 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height) LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); if( tex ) { +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif gAlphaMaskProgram.setMinimumAlpha(0.f); gGL.getTexUnit(0)->bind(tex, TRUE); gl_rect_2d_simple_tex( width, height ); @@ -1279,7 +1293,9 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height) LLGLTexture* tex = mLocalTextureObject->getImage(); if (tex) { +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif gAlphaMaskProgram.setMinimumAlpha(0.f); gGL.getTexUnit(0)->bind(tex); gl_rect_2d_simple_tex( width, height ); @@ -1316,7 +1332,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC // Note: if the first param is a mulitply, multiply against the current buffer's alpha if( !first_param || !first_param->getMultiplyBlend() ) { +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); // Clear the alpha @@ -1328,7 +1346,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC } // Accumulate alphas +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif gGL.color4f( 1.f, 1.f, 1.f, 1.f ); for (LLTexLayerParamAlpha* param : mParamAlphaList) { @@ -1350,7 +1370,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC LLGLTexture* tex = mLocalTextureObject->getImage(); if( tex && (tex->getComponents() == 4) ) { +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode(); gGL.getTexUnit(0)->bind(tex, TRUE); @@ -1370,7 +1392,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC { if( (tex->getComponents() == 4) || (tex->getComponents() == 1) ) { +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif gGL.getTexUnit(0)->bind(tex, TRUE); gl_rect_2d_simple_tex( width, height ); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -1387,7 +1411,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC // Note: we're still using gGL.blendFunc( GL_DST_ALPHA, GL_ZERO ); if ( !is_approx_equal(layer_color.mV[VW], 1.f) ) { +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gGL.color4fv(layer_color.mV); gl_rect_2d_simple( width, height ); @@ -1456,7 +1482,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, 0); } +#if GL_VERSION_1_1 glGetTexImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGBA, GL_UNSIGNED_BYTE, temp); +#endif U8* alpha_cursor = alpha_data; U8* pixel = temp; diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index a288c8955a..a6b0f54c88 100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -344,7 +344,9 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height) mCachedProcessedTexture->setAddressMode(LLTexUnit::TAM_CLAMP); } +#if GL_VERSION_1_1 LLGLSNoAlphaTest gls_no_alpha_test; +#endif gGL.getTexUnit(0)->bind(mCachedProcessedTexture); gl_rect_2d_simple_tex(width, height); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -361,7 +363,9 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height) } else { +#if GL_VERSION_1_1 LLGLDisable no_alpha(GL_ALPHA_TEST); +#endif gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gGL.color4f(0.f, 0.f, 0.f, effective_weight); gl_rect_2d_simple(width, height); |