In the PostEffect class, if you cause the shader to be updated (e.g. by changing a macro via setShaderMacro() or reload()), the shader will be cleared in checkRequirements, but the shader constant buffer (mShaderConsts) and the constants list (mEffectConsts) will not be updated to point to the new shader.
This causes problems in the OpenGL renderer as the constant buffer state becomes out of sync with the shader state. e.g. the render target size may be 0,0 since it still thinks the size is 1024,1024. The Direct3D renderer doesn't appear to be affected by this, possibly because it updates using ranges rather than on a per-constant basis.
In the PostEffect class, if you cause the shader to be updated (e.g. by changing a macro via
setShaderMacro()
orreload()
), the shader will be cleared in checkRequirements, but the shader constant buffer (mShaderConsts) and the constants list (mEffectConsts) will not be updated to point to the new shader.This causes problems in the OpenGL renderer as the constant buffer state becomes out of sync with the shader state. e.g. the render target size may be 0,0 since it still thinks the size is 1024,1024. The Direct3D renderer doesn't appear to be affected by this, possibly because it updates using ranges rather than on a per-constant basis.