在越来越多的人讨论Cg存留问题的时候,Cg 3.1突然发布了。主要的改进有:
Cg语言支持uniform buffer。
增加了OpenGL Unified Buffer Object(UBO)。
增加了翻译成OpenGL GLSL version 110和120的支持。
新的tessellation例子。
新的uniform buffer例子。
各个例子都加上了VC10的工程文件。
不知道NV怎么了,给出来的下载链接居然是错误的。正确的是http://http.developer.nvidia.com/Cg/cg_3_1_0010.html,有兴趣的朋友可以看看。
AMD的OpenGL驱动问题很多,是个众所周知的事情。以前我也写过《OpenGL驱动的陷阱:ATI篇》和《OpenGL驱动的陷阱:ATI篇,后续》来阐述这个问题,当时最新的驱动是Catalyst 10.10。过了一年多的时间,AMD的驱动和KlayGE的代码都有了不少变化,情况又如何呢?
失败的例子
在去年的驱动上,发现的问题主要有三个(ticket #58):
Deferred Rendering和Global Illumination中,GI的效果只在第一帧出现。没找到原因。
Detailed Surface和JudaTex Viewer中,纹理显示混乱。没找到原因。
GPU Particle System和Particle editor中,粒子没有显示出来。GS编译失败。
更新到Catalyst 12.1后(也可能在11.12或者11.11就更新了,我没测试) ...
从KlayGE 4.0开始,不但有为了下一版本开发的短期任务,还有一些中长期研发的任务。其中之一就是HLSL bytecode to GLSL编译器。现在KlayGE里的shader主要由HLSL写成,通过#ifdef的土办法兼容Cg。对D3D11来说可以直接使用,但对于OpenGL和OpenGL ES 2就得大费周折了。那种情况下,shader需要经过Cg编译器编译成传统的GLSL,在经过我自己的token级别的编译器转换成现代的GLSL,然后才能使用。
为什么不直接用Cg?看看Cg runtime在ATI卡上的表现吧。
为什么不用传统的GLSL?NV的驱动有一套attribute和index之间的绑定规则,比如gl_Position一定是0,gl_Normal一定是6(或者某个数,但是个常量),而且无法通过API来获取预定义attribute的i ...
[zh]
经过长时间的筹划,今天正式宣布开始次世代评测软件KlayMark的开发。
简介
KlayMark将以KlayGE为引擎,定位为一款集各种先进渲染技术于一身的跨平台评测软件。在提供赏心悦目的画面同时,对系统的性能作出综合评价。不论是PC平台还是移动平台,KlayMark将提供统一的计分方式,使得不同平台之间的得分具有可比性。
虽然动用到许多新技术,但KlayMark仍会保持极高的效率、较低的配置、良好的跨平台能力等特点。
发布计划
KlayMark的源代码将迟于二进制版本发布,类似Doom和Quake的方法。
由于平台的差异,KlayMark 1.0的发布将分拨进行。
Wave 1:预计开发周期1年。Windows平台支持D3D10+和OpenGL,Android平台支持Tegra ...
为迎接即将到来的OpenGL ES 3.0(开发代号Halti),KlayGE的OpenGLES2插件正式更名为OpenGLES,以保持兼容性。同时,还增加了OGLESConditionalRender,通过GL_EXT_occlusion_query_boolean来实现遮挡查询。
另外说说OpenGL ES 3。在2007年的OpenGL ES Overview里面就有提到代号为Halti的OGLES3,是基于OpenGL 3.0来开发,目标发布时间是2010年。但现在显然延期了很久。终于,在前不久的CES2012上,Imagination Technologies宣布了PowerVR6,支持OpenGL ES 3、OpenGL 3、D3D 10和OpenCL。特定型号还可以支持D3D11.1和OpenGL 4。之前ARM也宣布了Mali-6xx支持OpenGLES 3、D3D11和OpenCL 1.1。同样,Qualcomm的Adreno 3xx也会支持OpenGL ES 3 ...
去年4月份我写过《OpenGL ES Emulator横向比较》,比较了4种常见的OpenGL ES模拟器。过了将近一年,让我们再次横向比较一下现在的模拟器。
基本特性
厂商
NVIDIA
ARM
名称
x86 Windows OpenGL ES 2.0 Emulator
OpenGL ES 2.0 Emulator v1.3
模拟目标
Tegra
Mali
版本
OpenGL ES 1.1, 2.0; EGL 1.3
OpenGL ES 1.1,2.0; EGL 1.3
扩展
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_NV_log_textures
GL_OES_compressed_paletted_texture
GL_OES_element_index_uint
GL_OES_framebuffer_object
GL_OES_mapbuffer
GL_OES_rgb8_rgba8
GL_OES_shader_source
GL_OES_stencil8 ...
经过这几天的的开发和调试,KlayGE的所有例子都在NVIDIA的OpenGL ES模拟器上顺利运行了。除了没有GI、distance mapping退化成normal mapping、以及由于缺少float texture而不能实现高精度DoF之外,其他效果都和D3D11和OpenGL一致。
Tegra 2模拟器的问题
NVIDIA的OpenGL ES模拟器的模拟对象是Tegra 2,但支持的扩展不如真的Tegra 2。Tegra 2真机支持的OpenGL ES扩展有(来自Xoom):
GL_ARB_draw_buffers
GL_EXT_bgra
GL_EXT_Cg_shader
GL_EXT_packed_float
GL_EXT_texture_array
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_filter_anisotropic
GL_EXT_te ...
[zh]
glloader,KlayGE游戏引擎的一个子项目,是一个OpenGL扩展载入库。它可以载入OpenGL 1.0-4.2,OpenGL ES 1.0-2.0,同时也支持WGL、GLX、EGL和其他GL/GLES扩展,只要编写xml脚本就能自动生成扩展载入代码。glloader有一个 XML格式的数据库,包含了GL/GLES的所有入口函数、标示和类型定义。
在这个新版本中,glloader有了Android版,同时GL/GLES/EGL registry里的所有最新的扩展也都支持了。
请从这里下载。
[/zh]
[en]
The glloader, a subproject of Klay Game Engine, is an OpenGL extension loading library. It supports OpenGL core 1.0 to 4.2, OpenGL ES core 1.0 to 2.0, as well as WGL, GLX, EGL and other ...
[zh]
继glloader移植到Android之后,KlayGE也可以在Android上执行了。虽然,严格来说,只是能跑最最基本的空框架。
由于我没有Android真机,模拟器又无法执行OpenGL ES 2,所以我的测试方法是在最老的Asus EeePC上执行Android x86。空框架EmptyApp目前可以顺利执行:
[/zh]
[en]
After porting glloader to Android, KlayGE can be run on Android too. Technically, it's only a empty framework.
Since I don't have a real Android device, and the emulator can't run OpenGL ES 2, I have to test it on an old Asus EeePC with Android x86. The empty framework "EmptyApp" runs well on it:
[/en]
[zh] ...
AMD昨天发布了Catalyst 11.12 WHQL驱动。对开发者来说,最大的好处是正式支持了OpenGL 4.2!虽然从11.10 Preview 3开始,Catalyst就支持OpenGL 4.2,但正式版总是返回到了4.1。这是AMD第一个正式支持4.2的驱动。
Catalyst 11.12桌面版下载:
Cat 11.12 Win7 64-bit
Cat 11.12 Win7 32-bit
Cat 11.12 XP 64-bit
Cat 11.12 XP 32-bit
Catalyst 11.12移动版下载:
Cat 11.12 Mobility Vista / Win7 64-bit
Cat 11.12 Mobility Vista / Win7 32-bit
至此,主流显卡驱动都支持了OpenGL 4.2。(Intel?Intel也算主流?)