从Native到Web(三), NaCl学习笔记: 3D渲染(DX9迁移到GLES)

这篇博客介绍了从DirectX 9到OpenGL ES (GLES) 的迁移过程,主要关注GLES的特性和与DX9的不同之处。内容包括GLES的无固定管线设计、Shader的使用、移动平台限制、坐标系统、AlphaTest的处理、缓冲管理、Shader的Link过程、精度控制以及图形调试工具的缺失。
摘要由CSDN通过智能技术生成

NaCl的3D渲染API使用的GLES2.0, 这也很好理解, 因为这已经是公认的跨平台标准了. 手机, 平板, 网页, PC都可以使用.

就算在Windows上, 也有一些基于DX9的GLES2.0实现, 比如ANGLE. 有时候我真在想, 像M$这种升级个操作系统版本号就淘汰一种API的做法, 还不如全都使用标准库, 这样也节省了跨平台移植的成本~所以什么DX10/DX11, 还是省省吧

其实从DX9到GLES(本文提到的都是指2.0版本), 大部分只是API换了种写法, 难度不大. 之前有在手机上做过一个简单的GLES渲染器, 有一些差异总结一下吧(不限于NaCl):

  • GLES没有固定管线, 就算画条线要也写个shader. 不过我到是挺喜欢这种设计的, 干净
  • GLES现在的支持最低相当于SM2.0(一般是嵌入式设备), 主流的手机等都是SM3.0的标准. 所以, 常用的渲染效果都可以实现, 做个次世代画面也有一定的可行性
  • GLES的API都是C函数, 不像DX9那种有点面向对象的设计. 但是实际写代码, 这种API比较方便, 不用依赖指针
  • GLES因为是为移动平台设计的, 所以对于标准支持的特性有限. 比如FloatTexture, DXTn, BufferLock等都是基于扩展来实现的, 这点跟GL很像
  • GLES投影后Z的范围是[-1, 1], 这点需要特别注意. 至于什么左右手坐标
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值