BGE bug-fix[#34523] 2dfilter produces render error (objects disappear) - likely an...
authorDalai Felinto <dfelinto@gmail.com>
Mon, 4 Mar 2013 08:22:20 +0000 (08:22 +0000)
committerDalai Felinto <dfelinto@gmail.com>
Mon, 4 Mar 2013 08:22:20 +0000 (08:22 +0000)
Fix for 2.66a

With help from Daniel Stokes and Mitchell Stokes.

This bug always existed in OSX, but started showing up in Windows and Linux on review (54745 + 54747)
[the patch to enable alpha buffer for all OSs]

A better fix would be to use RAS_IRasterizer::SetAlphaBlend(GPU_BLEND_SOLID);
but I think gpu_verify_alpha_blend() is not switching to SOLID because
GTS.alphablend is GPU_BLEND_SOLID (even though GL_ALPHA_TEST is enabled).

Anyways, this is not something worth tackling now, since in terms of functionality it shouldn't matter.

source/gameengine/Rasterizer/RAS_2DFilterManager.cpp

index ab0f62c..8a8dc37 100644 (file)
@@ -435,6 +435,9 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas)
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        // if the last rendered face had alpha add it would messes with the color of the plane we apply 2DFilter to
        glDisable(GL_BLEND); 
+       // fix for [#34523] alpha buffer is now available for all OSs
+       glDisable(GL_ALPHA_TEST);
+
        glPushMatrix();         //GL_MODELVIEW
        glLoadIdentity();       // GL_MODELVIEW
        glMatrixMode(GL_TEXTURE);