转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=412

上个月的一篇帖子提到了ATI OpenGL驱动的一些陷阱,随着ATI驱动每个月的新版本不断发布,这些问题是否得到改善呢?

glBlitFramebufferEXT

情况一样,没有任何变化,还是没法用:(。

glClearBuffer*

WTF,没有任何变化,还是没法用。

glBeginConditionalRender

已经改进!如果glBeginConditionalRender和glEndConditionalRender完全严格地配对使用,就能正常工作,不会造成恐怖的死锁。如果一旦不小心没有遵循配对使用的规则,照死锁不误。NVIDIA的驱动上不配对也没发生任何错误,虽然确实不该那么用。

新发现的问题

在改进海洋渲染的过程中,displacement texture从ABGR16f改成了ABGR8,结果在ATI OpenGL的情况下一片平坦。经过其他测试后的结论是,ABGR8和ARGB8这样格式的纹理,在vertex shader中读取总是会返回0。这也是个莫名其妙的bug,按理说在D3D10+的卡上vs和ps对纹理读取的能力完全一样才对。