iOS 下的 OpenGL ES 2.0 初始化
OpenGL ES 2.0 Initialization under iOS
我已经在开发自己的游戏一段时间了,它在Windows上运行良好。一切都旨在支持跨平台。为了让您理解我的问题,我必须解释一下一切是如何工作的:
有多个库:平台、视频、XML、图像和引擎。它们中的每一个都可以在Windows下编译为DLL或在iOS上编译为静态库。
库中的所有内容要么是普通函数(用extern "C"
声明),要么是具有接口的对象。
文件夹结构的组织方式如下:项目、包含、源。
在 include 文件夹中,只有适用于所有平台的通用代码,如接口和函数原型。在源文件夹中,有特定于每个平台的其他文件夹。
我设法在iOS上移植平台库没有任何问题,但现在我被困在视频库上。
这处理渲染API(Windows下的OpenGL和iOS下的Opengl-ES 2)。
要创建驱动程序,我必须使用以下函数:
IVideoDriver* CreateVideoDriver(void* container)
容器是窗口下的HWND
。
问题是我不确定如何在iOS下使用这种初始化样式。
我已经阅读了一些教程,查看了示例源代码,但我不知道如何做到这一点。据我所知,OpenGL 初始化必须在视图中完成,我不知道如何将所有这些与我的代码链接起来。我知道我必须使用一些 objective-c 代码,但这不是问题。
任何人都可以帮我解决这个问题吗?
在iOS 5.0中,Apple引入了GLKit View,它提供了OpenGL ES感知视图的默认实现。您还可以使用管理 GLKit 视图的 GLKit 视图控制器。这些对象可以通过 XCode 直接拖到主 .xib 中,并将它们无缝地连接到您的实现中。
Ray Wenderlich写了一篇出色的入门文章,它可能会帮助你把它全部连接起来。http://www.raywenderlich.com/5223/beginning-opengl-es-2-0-with-glkit-part-1
祝你好运!
使用许多 iOS 示例中提供的 EAGLView 和 ESRenderer(请参阅 GLEssentials 或 GLES2Sample)。
使用起来非常简单。只是不要忘记与OGLES框架的链接,你就完成了!
您的VideoDriverIOS将看起来像:
In a VideoDriverIOS.h/VideoDriverIOS.mm
class VideoDriverIOS : public IVideoDriver
{
public:
...
// implement the pure virual here
protected:
EAGLView* mView;
...
}
并且您的方法可以直接使用 mView 对象。
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 在C和C++中初始化结构中的数组
- Android OpenSL ES在初始化时崩溃
- iOS 下的 OpenGL ES 2.0 初始化
- Android NDK OpenGL ES 2上下文初始化