在iPhone和Mac上共享的OpenGL代码

时间:2011-03-07 23:24:52

标签: iphone cocoa opengl opengl-es

我有一个用大量OpenGLES编写的iPhone项目,我想现在将应用程序移植到Mac / Cocoa。我可以在Mac上使用OpenGLES,还是必须做一堆#if语句?

3 个答案:

答案 0 :(得分:4)

据我所知,ES只是桌面版的简化版 - 任何有效的ES代码都是有效的标准GL代码(可能只需要一些调整)。当然,在桌面上也可以获得其他功能/功能,例如渲染三角形以外的形状。

List of alternatives for functions missing in OpenGLES

答案 1 :(得分:1)

OpenGL ES是OpenGL的一个子集 - 任何OpenGL ES应用程序在OpenGL上工作(但OpenGL应用程序可能无法在OpenGL ES上运行)

答案 2 :(得分:1)

我有一个可在iOS和Windows上运行的共享OpenGL代码库。有一小部分,没有什么大的,像这样:

// Page flip
#ifdef WIN32
    glFlush();
#else
    const GLenum discards[] = {GL_COLOR_ATTACHMENT0};
    glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, discards);   

    [context presentRenderbuffer:GL_RENDERBUFFER];
#endif

除了GL启动(不使用框架),OS用户输入事件处理程序和着色器,引擎在两个平台上的工作方式相同。我还在头文件中使用ifdef来防止Objective C“感染”代码库的其余部分,因此纯C ++文件不会看到具有“id”或“EAGLContext”等类型的类成员。