iOS 下的 OpenGL ES 2.0 初始化

OpenGL ES 2.0 Initialization under iOS

本文关键字:初始化 ES 下的 OpenGL iOS      更新时间:2023-10-16

我已经在开发自己的游戏一段时间了,它在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 示例中提供的 EAGLViewESRenderer(请参阅 GLEssentials 或 GLES2Sample)。

使用起来非常简单。只是不要忘记与OGLES框架的链接,你就完成了!

您的VideoDriverIOS将看起来像:

In a VideoDriverIOS.h/VideoDriverIOS.mm

class VideoDriverIOS : public IVideoDriver
{
public:
    ...
    // implement the pure virual here
protected:
    EAGLView* mView;
    ...
}

并且您的方法可以直接使用 mView 对象。