我正在尝试将MyGUI 3.2.0集成到我的OpenGL 3引擎中,但我遇到了一些问题。我的OpenGL引擎不使用OpenGL 3.3中不推荐/删除的任何OpenGL函数。我已经构建并链接了所有内容,并且稍微晃动以确保FreeType库最终位于正确的位置,以便MyGUI可以找到它们。
我按照快速入门指南调整它以使用OpenGLPlatform,但我跳过了输入部分,所以我可以先显示它。我编写了图像加载器接口,它可以工作,但是如果这有任何区别的话,我现在将保存功能保留为空。我没有得到任何编译错误或崩溃。日志文件中没有任何错误。我已经浏览了常见问题解答,我和前两个条目的情况相同,但是他们提到的功能对于OpenGLPlatform来说并不存在,所以它们可能不适用。
有一次,我有一些随机的三角形看起来像MyGUI的纹理,它们从我从引擎中提取的最后一个网格中伸出来,但我发现它们只是被我以前绑定到我的网格的着色器所吸引在我取消着色器后,它们消失了。我检查了gDEBugger并且从MyGUI代码加载了顶点缓冲区和纹理,所以我很确定它们正确加载。我知道纹理正确加载,至少,顶点缓冲区看起来没有损坏或任何东西。我也逐步完成了代码,它似乎正在绘制一些东西,但是我没有在MyGUI的屏幕上获得任何输出。我错过了什么?
在我的WindowMgr init()中:
if (m_platform == NULL)
{
m_platform = new MyGUI::OpenGLPlatform();
m_platform->initialise(&m_imageLoader);
m_platform->getDataManagerPtr()->addResourceLocation("./data/ui/MyGUI", false);
}
if (m_GUI == NULL && m_platform != NULL)
{
m_GUI = new MyGUI::Gui();
m_GUI->initialise();
}
MyGUI::ButtonPtr button = m_GUI->createWidget<MyGUI::Button>("Button", 300, 10, 300, 26, MyGUI::Align::Default, "Main", "test");
button->setCaption("Test");
在WindowMgr中渲染():
if (m_platform != NULL)
{
renderGlobals.shaderMgr.unbindAll();
m_platform->getRenderManagerPtr()->drawOneFrame();
}
在WindowMgr中,resizeWindow():
if (m_platform != NULL)
{
m_platform->getRenderManagerPtr()->setViewSize(_width, _height);
}
在WindowMgr中关闭():
if (m_GUI != NULL)
{
m_GUI->shutdown();
delete m_GUI;
m_GUI = NULL;
}
if (m_platform != NULL)
{
m_platform->shutdown();
delete m_platform;
m_platform = NULL;
}
答案 0 :(得分:2)
记住,孩子们,在你让MyGUI做它之前取消绑定你的顶点数组对象或者以最可怕的方式混淆一切:看起来它根本就没有做任何事情!我是个白痴!