为啥在我的 OpenGL 引擎中没有从 MyGUI 获得任何屏幕输出?

Posted

技术标签:

【中文标题】为啥在我的 OpenGL 引擎中没有从 MyGUI 获得任何屏幕输出?【英文标题】:Why am I not getting any screen output from MyGUI in my OpenGL engine?为什么在我的 OpenGL 引擎中没有从 MyGUI 获得任何屏幕输出? 【发布时间】:2012-07-24 20:09:13 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于为啥在我的 OpenGL 引擎中没有从 MyGUI 获得任何屏幕输出?的主要内容,如果未能解决你的问题,请参考以下文章

MyGui 3.2.0(OpenGL平台)的编译(五篇文章)

为啥在我安装 Mountain Lion 时 OpenGL 会降级?

为啥我的 OpenGL 不绘制任何东西?

为啥我的计时器停止滴答作响?

为啥我的三角形在镶嵌后不显示? OpenGL

为啥我的OpenGL程序只输出一个白色背景的窗口而没有图形呢?