From: Mike H. <mho...@gr...> - 2004-02-27 17:52:51
|
I need more advanced blending modes for composite spus, so I want to use blending extensions if available. How do I safely do this? It's easy to get and check the extension within my spu, but I then need to call that function on my parent/super, 'render'. If I do this the "safe" way within my spu, I issue a crGetProcAddress and set a local function pointer. Obviously this does not work for the parent/super spu. A quick explanation of why I need this. After a brief chat with Kurt Akeley about my blending issues doing a parallel composite, he told me about how the base blending modes are mostly broken and were a carry over from a rash implementation of them in IrisGL. If you use src_alpha, 1-src_alpha in glBlendFunc, the alpha values of the src and dst are also multiplied. Then, when you issue a readback, the values in the alpha channel that you will use for the next composite are broken. What I really want to do is a normal alpha blend and have only the color components, but not the alpha values, effected. The correct solution seems to be glBlendFunSeparateEXT. Ideas on how to safely use this extension within a spu? Under linux I don't need to load the extension as it is exported already, but Windows, of course, does not export the function so a GetProcAddress of some sort is required. Thanks, -Mike |