iPhone - 使用OpenGL创建应用程序 - 什么是好的包装器或低级引擎?

时间:2011-02-10 01:56:31

标签: iphone opengl-es

我正在开发一些需要使用OpenGLes 2.0的应用程序。我从一个简单的示例项目开始制作一个原型。但是,我对所有OpenGL代码造成的混乱感到不满意。我认为如果我不断扩展代码,那么所有混乱都会引起问题。

那么,是否有一个很好的解决方案可以在更高的水平上使用OpenGL?我并不需要游戏引擎的所有复杂性和开销。我只是有点沮丧,我不能像这样处理OpenGL:

ShaderProgram shader(fragmentCode, vertexCode);
RenderBuffer renderBuffer(xResolution, yResolution);

2 个答案:

答案 0 :(得分:2)

你必须原谅这种无耻的自我推销,但由于你所遇到的确切挫折,我一直在研究just such a framework。我厌倦了必须正确初始化资源然后清理它们的废话。以下是我的XPG​​框架中的示例。

XPG::Texture2D tex("texture.jpg"); // automatically cleaned up
tex.bind(); // ready for use

我为顶点缓冲对象(VBO)之类的东西构建了类似的对象。我仍在努力,但OpenGL工具肯定会让你受益匪浅。我还没有看到另一个框架使事情变得如此简单。如果有人知道,我很乐意听到。我一直在努力的那个甚至适用于Android。它应该在iOS中工作,但我还没有测试它。它确实适用于OSX。 :)

要查看高级演示,请参阅测试模块源代码:interfaceimplementation

答案 1 :(得分:1)

我认为原始OpenGL和完整引擎之间的位置不会有效。假设您能够管理着色器,缓冲区,纹理等OpenGL对象。

  1. 您仍然需要一个加载逻辑来从某个地方获取输入数据。发动机有它。
  2. 您需要使用工具来组合着色器并测试场景。发动机应该有它。
  3. 您将面临有关不兼容的顶点属性 - 着色器 - 统一参数的隐藏错误。引擎必须检查一致性并为您顺利链接这些实例。
  4. 因此,我的结论是:一旦你决定从原始GL中继续前进,你最终会进入一个引擎。无论是长期如果你自己做,还是在短期内,如果你采取现有的。

    不仅如此,我认为引擎应该为您提供创建着色器程序和以您想要的方式呈现缓冲区的功能。我不希望这些操作带来太多开销。