1

MyGUI 3.2.0 を OpenGL 3 エンジンに統合しようとしていますが、いくつか問題があります。私の OpenGL エンジンは、OpenGL 3.3 で非推奨/削除された OpenGL 関数を使用していません。MyGUI がそれらを見つけられるように、FreeType ライブラリが適切な場所にあることを確認するために少しいじって、すべてをビルドしてリンクしました。

クイック スタート ガイドに従って、OpenGLPlatform を使用するように調整しましたが、最初に表示されるように、入力セクションをスキップしました。動作する画像ローダー インターフェイスを作成しましたが、違いが生じる場合は、今のところ保存機能を空のままにしました。コンパイル エラーやクラッシュは発生しません。ログ ファイルにエラーはありません。私は FAQ を確認しましたが、最後の 2 つのエントリと同じ状況に陥っていますが、言及されている機能は 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 render():

if (m_platform != NULL)
{
    renderGlobals.shaderMgr.unbindAll();
    m_platform->getRenderManagerPtr()->drawOneFrame();
}

WindowMgr resizeWindow() では:

if (m_platform != NULL)
{
    m_platform->getRenderManagerPtr()->setViewSize(_width, _height);
}

WindowMgr close():

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 に答える