Hea*_*ser 42 opengl opengl-es emulation opengl-to-opengles
我正在开发各种游戏框架,并且是OpenGL的新手.大多数书籍似乎都没有对这个问题给出非常明确的答案,我希望使用OpenGL在我的桌面上进行开发,但是在OpenGL ES 2.0环境中执行代码.我的问题是双重的:
Iva*_*ica 40
我上次做任何ES工作已经有三年了,所以我可能已经过时或只是错误地记住了一些东西.
不,针对桌面的OpenGL定位不等于定位OpenGL ES,因为ES是一个子集.ES不实现立即模式功能(glBegin()/ glEnd(),glVertex*()...)顶点数组是将内容发送到管道的主要方式.
此外,它取决于您要定位的配置文件:至少在Lite配置文件中,ES不需要实现浮点功能.相反,你得到定点函数; 认为32位整数,其中前16位表示小数点前的数字,后面的16位表示小数点后的数字.
换句话说,如果使用浮点数,即使简单的代码也可能是不可移植的(你必须用gl*f()函数调用替换对函数的调用)gl*x().
看看你如何在Trolltech的例子中解决这个问题(特别是qtwidget.cpp文件;它是Qt的例子,但仍然......).你会看到他们打这个电话:
q_glClearColor(f2vt(0.1f), f2vt(0.1f), f2vt(0.2f), f2vt(1.0f));
这意味着替换对glClearColorf()的调用.此外,它们使用宏f2vt()- 意味着浮点到顶点类型 - 它自动将参数从float转换为正确的数据类型.
虽然三年前我正在为一家公司开发一些小型演示,但我已经成功地使用了PowerVR的SDK.它适用于Windows下的Visual C++; 我没有在Linux下试过它(因为我在公司PC上工作,所以没有必要).
一个小小的更新,以反映我最近的ES经验.(2011年6月7日)
glBegin()/ glEnd()与顶点数组glClearColor()调用glClearColorf()