Skip to content

Archive

Category: Tech article
上个月的一篇帖子提到了ATI OpenGL驱动的一些陷阱,随着ATI驱动每个月的新版本不断发布,这些问题是否得到改善呢? glBlitFramebufferEXT 情况一样,没有任何变化,还是没法用:(。 glClearBuffer* WTF,没有任何变化,还是没法用。 glBeginConditionalRender 已经改进!如果glBeginConditionalRender和glEndConditionalRender完全严格地配对使用,就能正常工作,不会造成恐怖的死锁。如果一旦不小心没有遵循配对使用的规则,照死锁不误。NVIDIA的驱动上不配对也没发生任何错误,虽然确实不该那么用。 新发现的问题 在改进海洋渲染的过程中,displacement texture从ABGR16f改成了ABGR8,结果在ATI OpenGL的情况下一片平坦。经过其他测试后的结 ...
多年前NVIDIA就发布了3D Vision技术,能提供多种立体渲染的效果。随着2009年的电影阿凡达所带来的世界性3D狂潮,你是否也想在自己的程序中加入立体渲染呢? 3D Vision的原理 根据http://developer.nvidia.com/object/3d_stereo_dev.html,3D Vision的原理如下: 在驱动内部,所有3D场景都渲染两次——一次用左眼,一次用右眼。驱动会自动“在线”修改典型的3D游戏vertex shader,所以在执行期可以产生正确的图像。 注意加粗的几个词所透露出来的信息。首先,你的每一个Draw call都被驱动变成了两个Draw call;其次,立体化的过程是自动的,无法自由控制;第三,它只能处理典型的vertex shader,而不是任意的vertex shader,比如sky box的vert ...
用MinGW编译DShow的东西,经常遇到没找到IBaseFilter的问题。本质上是MinGW的w32api并没有提供完整的DShow头文件所致。经过一番折腾,得到了下面的解决方案: 1. 从http://sourceforge.net/projects/mingw-w64/下载mingw-w64-headers,我这里用的是mingw-w64-headers-20100717.tar.xz 2. 把mingw-w64-headersinclude目录下的strmif.h、rpcndr.h、uuids.h、ksuuids.h、control.h拷贝到MinGWinclude,覆盖原有文件。 3. 打开strmif.h,删掉所有"__MINGW_EXTENSION"。 4. 打开rpcndr.h,删掉所有"__MINGW_EXTENSION",并在第81行"typedef int ssize_t;"的前后分别加上"#ifdef _SSIZE_T_"和"#endif"。 5. 打开vmr9.h,查找"MixerPref9_Rende ...
自从NVIDIA的GTX480推出以来,网上能见到不少对比评测。但大家一般都是用3DMark之类大型的评测方法,得到的结果比较笼统。我在这里打算评测的方法是用DX SDK Feb2010的sample,对GPU的不同模块分开评测。这样的结果对于图形相关人员更有意义。 我的评测打算分三轮进行,分别评测传统图形流水线,DirectCompute和Tessellation的性能。测试的机器是两台Dell T5400 Workstation(Xeon E5440 4-core,4GB内存),分别装一块GTX480和一块HD5870。两块显卡都是公版配置。操作系统是Win7 64bit,使用传统界面以消除Areo界面的PS开销。显卡驱动分别是Forceware 197.41和Catalyst 10.3。 第一轮 传统图形流水线 第一论测试的是两块显卡在游戏常见 ...