当前位置:  开发笔记 > 后端 > 正文

什么是OpenGL-ES的"in"和"out"?(从OpenGL移植)

如何解决《什么是OpenGL-ES的"in"和"out"?(从OpenGL移植)》经验,为你挑选了2个好方法。

似乎我所能找到的关于OpenGL-ES的所有文档都说"OpenGL-ES就像OpenGL一样,但没有很多东西.例如,没有glBegin或glEnd."

太棒了.那么,ELSE不是什么?或者是有一个什么样的名单?或者也许是一个移植指南?

(具体来说,我正在尝试将现有的GL应用程序移动到iPhone,尽管我不想将我的Q限制在iPhone上.)



1> Patrick Hoga..:

回答问题的部分问题是缺少许多东西,而且往往是一组很少使用或不适用的位标志.描述差异的最佳文档实际上是实现标头.

对于我正在研究的框架,我决定在桌面和iPhone之间完全跨平台.我弄清楚的方法是在OpenGL中编写代码,看看它在哪里中断.然后看看

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/ System/Library/Frameworks/OpenGLES.framework/Headers/ES1/gl.h

并将其与之比较

/Developer/SDKs/MacOSX10.5.sdk/ System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h

这些标题非常简单易懂.

到目前为止我发现的主要区别是没有GLdouble(使用GLdouble的任何东西,如glOrtho和glFrustum都有GLfloat版本glOrthof和glFrustumf).由于某种原因,也没有gluPerspective或gluPerspectivef.

这是一个替代品:

void gluPerspective( GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar )
{
   GLfloat xmin, xmax, ymin, ymax;

   ymax = zNear * tan(fovy * M_PI / 360.0);
   ymin = -ymax;
   xmin = ymin * aspect;
   xmax = ymax * aspect;

   glFrustumf( xmin, xmax, ymin, ymax, zNear, zFar );
}

由于你没有glBegin和glEnd,你必须通过glDrawArray或glDrawElements(首选)做所有事情.一个快速而肮脏的例子:

void draw( short x, short y, short w, short h )
{
    const GLshort t[8] = { 0, 0, 1, 0, 1, 1, 0, 1 };
    const GLshort v[8] = { x, y, x+w, y, x+w, y+h, x, y+h };

    glVertexPointer( 2, GL_SHORT, 0, v );
    glEnableClientState( GL_VERTEX_ARRAY );

    glTexCoordPointer( 2, GL_SHORT, 0, t );
    glEnableClientState( GL_TEXTURE_COORD_ARRAY );

    glDrawArrays( GL_TRIANGLE_FAN, 0, 4 );
}

查看Apple的技术说明TN2230"针对iPhone OS优化OpenGL ES",了解其他一些可能对移植有用的提示.

到目前为止移植对我来说是相当痛苦的,除非你的应用程序执行一些非常先进的OGL内容或使用完全不受支持的功能,你可以通过点击构建按钮找到你的问题,通过挖掘一点点来解决一个简单的问题. gl.h文件.实际上,移植到ES类会迫使您编写优秀的渲染代码.



2> jblocksom..:

从Khronos.org的OpenGL ES 1.X信息页面链接的"OpenGL ES 1.1.12差异规范"(PDF)解决了 OpenGL ES 1.X和OpenGL 1.5之间的差异.OpenGL ES 1.1是iPhone上使用的版本.

差异规范并不是我见过的最简单的文档,但它比一般的OpenGL规范更容易阅读.我建议您获取一个您调用的OpenGL函数列表,然后搜索差异文档.它将向您显示OpenGL ES是否支持它们,如果支持只是部分支持,您可以转到完整规范以获取更多信息.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有