上一个帖子提到了在Catalyst 11.4上,KlayGE的OpenGL插件黑屏的情况,现已查明是因为AMD和NVIDIA的GLSL不兼容的原因。NV的驱动上fragment shader可以定义varying out vec4 v_gl_FragData[8]这样的输出数组,但AMD的驱动上不支持。所以我再次修改GLSL生成器,把数组拆成独立变量,解决了问题。但实际上AMD的GLSL预定义了out vec4 gl_FragData[],所以变成预定义可以,自定义不行的情况。估计得等以后他们自行解决吧,目前只能先绕开了。
上一个帖子提到了在NV 270.xx驱动上,OpenGL MRT出问题的情况。经过一些单元测试,我发现那不是个驱动的bug,而是270系列驱动对GLSL的实现更加严格了。在GLSL 1.3,也就是OpenGL 3.0上,gl_FragColor和gl_FragData都被标记为deprecated。原本的驱动仍旧提供了对它们的支持,但270.xx去掉了gl_FragData,所以在需要MRT的时候就得自己定义varying out了。在对GLSL生成器做些许修改之后,KlayGE在OpenGL插件上的MRT都恢复了正常。
继前几天的270.51 Beta之后,NVIDIA正式发布了270.61 WHQL。这标志着NVIDIA已经开启了270系列驱动的大门。这款驱动支持GeForce 6以来的所有桌面Geforce GPU,以及ION桌面GPU。在API方面,它在Geforce 400+的显卡上支持OpenGL 4.1,之前的显卡只支持OpenGL 3.3。在OpenGL扩展方面,和之前的270.51 Beta一样。下载链接:
Vista / Win7 64-bit
Vista / Win7 32-bit
XP 32-bit
XP 64-bit
在使用的过程中,我发现270系列驱动在OpenGL下的一些问题。首先是它去掉了对GL_EXT_transform_feedback的支持。所以要么退回到GL_NV_transform_feedback,要么前进至OpenGL 3.0提供的transform feedback。另一个可能是bug的地方在于,MRT虽然可以调 ...
最早出现的270系列驱动是GPU Computing注册开发人员才能下载到的CUDA 4.0 RC驱动。现在270.51 BETA已经可以从NVIDIA网站下载了:
Win7/Vista 64 Bit
Win7/Vista 32 Bit
WinXP 64 Bit
WinXP 32 Bit
在270系列驱动里,除了支持CUDA 4.0之外,另一个有意义的功能是对OpenGL ES的增强。自从OpenGL 4.1明确提出对OpenGL ES的支持以来,AMD和NVIDIA的驱动都加入了对OpenGL ES的支持。实际上AMD在那之前就已经部分支持了。这次NV新增的扩展有27个:
GL_EXT_texture_compression_dxt1
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_type_2_10_10_10_REV
GL_NV_alpha_test
GL_NV_blend_minmax
GL_NV_complex_primitives
GL ...
在GLIntercept 0.5了那么多年之后,1.0 Beta终于出了。GLIntercept在功能上类似gDEBugger,可以拦截OpenGL 1.0-2.1的函数调用,然后:
把所有的OpenGL函数调用保存到文本或者XML格式,用来记录每一帧。
在运行期显示和编辑shader。支持ARB VP/FP/GLSL和NV VP/FP。
改摄像机。自由浏览发给显卡的几何信息,打开/关闭线框模式/背面剔除/视锥。
保存和跟踪纹理。(支持绑在1D、2D、3D、NVRect和p-buffer上的纹理。)可以保存成TGA、PNG和JPG格式。
保存和跟踪shader/program。0.41开始支持ARB VP/FP/GLSL和NV VP/FP。
保存和跟踪display list。
在render call之前和之后保存OpenGL frame buffer (color/depth/stencil)。可以保存之前和 ...
上个月的一篇帖子提到了ATI OpenGL驱动的一些陷阱,随着ATI驱动每个月的新版本不断发布,这些问题是否得到改善呢?
glBlitFramebufferEXT
情况一样,没有任何变化,还是没法用:(。
glClearBuffer*
WTF,没有任何变化,还是没法用。
glBeginConditionalRender
已经改进!如果glBeginConditionalRender和glEndConditionalRender完全严格地配对使用,就能正常工作,不会造成恐怖的死锁。如果一旦不小心没有遵循配对使用的规则,照死锁不误。NVIDIA的驱动上不配对也没发生任何错误,虽然确实不该那么用。
新发现的问题
在改进海洋渲染的过程中,displacement texture从ABGR16f改成了ABGR8,结果在ATI OpenGL的情况下一片平坦。经过其他测试后的结 ...
前几天的帖子提到过gDebugger的新版本是免费的。现在,新版本5.8终于来了,只要注册就可以免费使用1年,也不是永久免费的。下载地址见:http://www.gremedy.com/free_license.php。
盼了这么多年之后,Graphic Remedy终于宣布gDEBugger不再收费!正式的免费版本在月底发布,在此之前可以使用官方修改过的license文件:Free gDEBugger license file。
在下一版的KlayGE中,D3D9插件光荣退休,OpenGL插件将要取代它在WinXP下的位置。众所周知,ATI的OpenGL驱动一直毛病众多。因此解决OpenGL插件在ATI卡上出现的错误成了当务之急。本文就讨论一下在增强OpenGL插件的过程中遇到的陷阱及其解决方法。测试的显卡为HD5870,所有问题在9.12-10.10的驱动中都会出现。
glBlitFramebufferEXT
在以前的版本里,OpenGL插件在ATI显卡上的文字显示总是乱码。一开始怀疑是vbo或者shader造成的,最后定位在texture本身。在texture的局部拷贝过程中,OpenGL插件用的是GL_EXT_framebuffer_blit扩展的glBlitFramebufferEXT。ATI驱动对GL_EXT_framebuffer_blit的支持似乎并不完善,结果是虽然什么错误都没发生, ...
[zh]
支持OpenGL 4.1
支持最新扩展
Bug修正
请参见下载页面。
[/zh]
[en]
Support OpenGL 4.1
Support new extensions
Bug fixed
Please see Downloads.
[/en]