1

我正在尝试将 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;
}
4

1 回答 1

2

记住,孩子们,在你让 MyGUI 做这件事之前解开你的顶点数组对象,否则它会以最可怕的方式搞砸一切:看起来它根本没有做任何事情!我是个白痴!

于 2012-07-26T05:10:45.237 回答