0

我已经在自己的游戏上工作了一段时间,它在 Windows 上运行良好。一切都旨在支持跨平台。为了让您理解我的问题,我将不得不解释一下一切是如何工作的:

有多个库:Platform、Video、XML、Image 和 Engine。它们中的每一个都编译为 Windows 下的 DLL 或 iOS 上的静态库。

库中的所有内容要么是普通函数(用 声明extern "C"),要么是具有接口的对象。

文件夹结构是这样组织的:Project、Include、Source。

在包含文件夹中,只有所有平台的通用代码,如接口和函数原型。在源文件夹中还有其他特定于每个平台的文件夹。

我设法将平台库移植到 iOS 上,没有任何问题,但现在我被困在视频库上。

它处理渲染 API(windows 下的 OpenGL 和 iOS 下的 Opengl-ES 2)。

要创建驱动程序,我必须使用以下函数:

IVideoDriver* CreateVideoDriver(void* container) 

容器是HWNDwindows下的。

问题是我不确定如何在 iOS 下使用这种初始化样式。

我已经阅读了一些教程,查看了示例源代码,但我无法弄清楚如何做到这一点。从我看到的 OpenGL 初始化必须在一个视图中完成,我不知道如何将所有这些与我的代码链接起来。我知道我必须使用一些objective-c 代码,但这不是问题。

谁能帮我解决这个问题?

4

2 回答 2

2

在 iOS 5.0 中,Apple 引入了 GLKit 视图,它提供了 OpenGL ES 感知视图的默认实现。您还可以使用管理 GLKit 视图的 GLKit 视图控制器。这些是您可以通过 XCode 直接拖入主 .xib 的对象,并将它们无缝连接到您的实现。

Ray Wenderlich 写了一篇出色的入门文章,它可能会帮助您将其全部连接起来。 http://www.raywenderlich.com/5223/beginning-opengl-es-2-0-with-glkit-part-1

祝你好运!

于 2012-06-19T12:23:40.290 回答
1

使用许多 iOS 示例中提供的 EAGLView 和 ESRenderer(参阅GLEssentialsGLES2Sample

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

您的 VideoDriverIOS 将如下所示:

在 VideoDriverIOS.h/VideoDriverIOS.mm

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

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

于 2012-06-19T12:45:53.107 回答