Skip to content
上一篇讲到了如何填平OpenGL和D3D之间一些原本被认为位于底层的区别。本篇将剖析两个API在功能上的异同,以及直接相互访问的可能性。 功能 D3D9的功能早已被OpenGL 2.0所覆盖,网上可以找到很多资料,这里就不提了。本文注重的是新的GPU特性。下表列出了D3D10+的新功能,以及实现该功能所需要的OpenGL扩展或核心。 D3D 10的功能 OpenGL所对应的 Geomrtry shader GL_ARB_geometry_shader4或OpenGL 3 Stream output GL_EXT_transform_feedback或OpenGL 3 State对象 无,需要在上层封装GL_EXT_direct_state_access Constant buffer GL_ARB_uniform_buffer_object或OpenGL 3 Texture array和新的资源格式 ...
[zh] KlayGE经历了3.12的合作开发的成功之后,正式向着下一个大版本4.0迈进!4.0不追求有多少新功能,主要目标是对现有的东西进行整合和优化,成为更有效更简单实用的开发框架。该版本大约在2011年12月份发布,这里列出目前的新功能计划。 系统要求变化 支持Shader model 4.0的显卡 必然出现 这些特性一定会出现在KlayGE 4.0中,都有明确的实现方法,不确定性因素较小。 Deferred Rendering层 资源载入框架 优化GI 支持render-to-texture-array Phong Tessellation Dual Quaternions蒙皮 可能出现 可能出现的特性要么存在比较大不确定性,要么优先级较低,是否会出现在KlayGE 4.0取决于时间关系。 移植到A ...
今天在Android的开发网站看到了google已经发布Android 3.2 SDK,目前API level已经升到13。和之前的传闻一样,Android 3.2主要目标是更好地支持7寸平板。 新的用户功能 针对更多平板设备的优化 让固定分辨率的应用也可以兼容式缩放显示 SD卡媒体同步 新的开发功能 增加了用于控制屏幕的API NDK也升级到了r6。最显著的更新是支持了x86 ABI,看来android将要大举进驻x86已经毫无疑问了。 另一个好消息是,Android的开发网站不再被墙,国内可以直接访问。
上一篇提出了跨越OpenGL和D3D的基本问题,介绍了一些能在不改变API的情况下,通过输入数据来消除OpenGL和D3D之区别。本篇的重点是如何利用现代OpenGL提供的扩展和新功能,消除一些无法在上层解决的问题。 顶点颜色顺序 D3D9 最常用的顶点颜色格式是BGRA格式(也就是D3DCOLOR),而OpenGL默认用的是RGBA格式。D3D9用BGRA纯粹是因为历史原因,早期硬 件不支持UBYTE4的格式,只能用D3DCOLOR,然后再shader里调用D3DCOLORtoUBYTE4。现在的GPU都支持 UBYTE4,D3D10+也是可以直接使用RGBA,所以这已经不是问题了。 如果需要兼容已经生成BGRA格式数据,现代OpenGL提供了GL_EXT_vertex_array_bgra这个扩展,也可以使用BGRA作为顶点颜色输入格式 ...
多年来,在论坛和各个网站上不断能看到拿OpenGL和D3D进行比较的帖子和文章。他们经常制造很多谜思,使得初学者和一些从业人员对OpenGL和D3D产生了各种各样的流言。 有人说,OpenGL直接调到驱动,性能高于D3D。 有人说,Shader都得写两套,很麻烦。 有人说,OpenGL和D3D在底层有很多区别,而且不可设置。 有人说,图形引擎如果要兼容两者,就只能取其功能的交集,最后还不如任何一种API。 真的么? 本文试图: 找出现代OpenGL和D3D的共通之处 归纳如何让API对上层代码尽量透明 本文不希望: 讲解函数间的对应关系 如何在OpenGL和D3D之间作选择 贬低一方,抬高另一方 下面先从几个比较基本的方面 ...
[zh]在网友cin的帮助下,KlayGE的国际论坛上线了!目前包含英文论坛和俄文论坛。中文论坛仍是由opengpu提供的。[/zh] [en]With cin's help, the international forum of KlayGE goes online! At present, it contains English forum and Russian forum. The Chinese forum is still provided by opengpu.[/en]
昨晚写了我的第一个WebGL程序,主要是用来测试浏览器对WebGL的支持程度,有兴趣的朋友可以看看。 WebGL test
[zh] KlayGE 3.12.0在上半年的最后一天发布了!本版的亮点是支持实时全局光照。主要更新如下: 支持全局光照 包含第三方库及其编译脚本 增加了Maya导出插件 支持Dual Paraboloid Shadow Map 增加了多种模式的BC1-BC5纹理压缩函数 增加了cmake工程脚本 支持Filmic tonemapping 支持FXAA和Temporal AA KlayGE 3.12.0的很多功能是由组员完成的。感谢吴彧文提供的GI,感谢王锐、朱晓阳、honyeung Lau提供的Maya插件,感谢张亚川提供的DPSM,感谢陈顺斌、郭鹏提供的FXAA和Temporal AA,感谢王锐提供的cmake工程脚本。更感谢大家这么多年来的支持和帮助! 从此处下载KlayGE 3.12.0。 [/zh] [en] KlayGE 3.12.0 r ...
即将召开的High-Performance Graphics 2011上有篇文章叫作High-Performance Software Rasterization on GPUs,作者是NVIDIA Research的Samuli Laine和Tero Karras(没错,Efficient Sparse Voxel Octrees也是他们)。他们在GPU上用CUDA构造出了一个软件光栅化组件,光栅化算法类似于Larrabee(以及开源软件渲染器SALVIA):先把primitive分到多个bin中,然后subdivide成像素级别的大小。不过它把subd阶段分为Coarse和Fine两个阶段,用不同的线程粒度完成。Larrabee里面也有这么分的,不过是连着做完,不是两个独立的阶段。 对光栅化算法感兴趣的同学不妨看看此文。 作者主页 PDF下载
昨天收到了小顺提交的FXAA和TAA代码,现在已经集成进KlayGE。目前实现的FXAA是在颜色上检测边缘的,效果较好,但运算量也上去了。啥都不说,上图! [caption id="attachment_1207" align="aligncenter" width="648" caption="没有经过抗锯齿的场景"][/caption] [caption id="attachment_1205" align="aligncenter" width="648" caption="经过FXAA抗锯齿过的场景"][/caption] 对局部细节做一个放大比较: [caption id="attachment_1208" align="aligncenter" width="407" caption="局部比较"][/caption] 边缘的情况如下,因为是基于颜色的边缘,所以需要AA的像素较多。 [caption id="attachment_1213" align="aligncenter" ...