我已经从事我的游戏已有一段时间了,并且在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(请参见GLEssentials或GLES2Sample)。
使用起来非常简单。只是不要忘了与OGLES框架的链接,您就完成了!
您的VideoDriverIOS将如下所示:
在VideoDriverIOS.h / VideoDriverIOS.mm中
class VideoDriverIOS : public IVideoDriver
{
public:
...
// implement the pure virual here
protected:
EAGLView* mView;
...
}
并且您的方法可以直接使用mView对象。