我已经从事我的游戏已有一段时间了,并且在Windows上可以正常工作。一切都旨在为跨平台提供支持。为了让您理解我的问题,我将不得不解释一下一切如何工作:

有多个库:平台,视频,XML,图像和引擎。它们每个都可以在Windows下编译为DLL或在iOS上编译为静态库。

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

文件夹结构的组织方式如下:项目,包含,源。

在include文件夹中,只有所有平台(如接口和功能原型)的通用代码。在源文件夹中,还有其他特定于每个平台的文件夹。

我设法在iOS上顺利移植了平台库,但没有遇到任何问题,但是现在我陷入了视频一局。

这处理渲染API(Windows下为OpenGL,iOS下为Opengl-ES 2)。

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

IVideoDriver* CreateVideoDriver(void* container)


容器是Windows下的HWND

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

我已经阅读了一些教程,查看了示例源代码,但是我不知道该怎么做。从我看来,OpenGL初始化必须在视图中完成,而且我不知道如何将所有这些与我的代码链接。我知道我必须使用一些Objective-C代码,但这不是问题。

有人可以帮我解决这个问题吗?

最佳答案

使用许多iOS示例中提供的EAGLView和ESRenderer(请参见GLEssentialsGLES2Sample)。

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

您的VideoDriverIOS将如下所示:

在VideoDriverIOS.h / VideoDriverIOS.mm中

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


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

10-08 11:24