首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OpenGL-ES的"in“和"out”是什么?(从OpenGL移植)

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

Stack Overflow用户
提问于 2008-11-07 17:58:46
回答 2查看 6.3K关注 0票数 18

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

好的,太棒了。那么,还有什么是没有的呢?或者有一份清单,上面有什么内容?或者是一本移植指南?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-11-07 20:43:51

the OpenGL ES 1.X info page at Khronos.org链接到的"OpenGL ES 1.1.12 Difference Specification" (PDF)经历了OpenGL ES 1.X和OpenGL 1.5之间的差异。iPhone上使用的版本是OpenGL ES 1.1。

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

票数 13
EN

Stack Overflow用户

发布于 2009-01-07 19:57:38

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

对于我正在开发的框架,我决定让它在桌面和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。

以下是替代方案中的一小部分:

代码语言:javascript
复制
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 (首选)来完成所有工作。下面是一个简单明了的例子:

代码语言:javascript
复制
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 );
}

查看苹果的技术笔记TN2230 "Optimizing OpenGL ES for iPhone OS",了解一些在移植过程中可能有用的其他提示。

到目前为止,移植对我来说是相当轻松的,除非你的应用程序做了一些非常高级的OGL东西,或者使用了完全不受支持的功能,否则你会通过点击build按钮来发现你的问题,通过深入研究gl.h文件,简单的修复就会很明显。事实上,移植到ES会迫使你编写良好的优化渲染代码。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/272970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档