1

私は小さなデモを書いていますが、まだ完成していませんが、bSuccess = m_pRenderHAL->InitHAL(GL::HALInitParams()); GLエラーが出て、

アサート: GraphicsDeviceImmediate::Initialize (0x502) の前に GL エラー。

何か設定が間違っているのでしょうか?

namespace SF = Scaleform;
using namespace Scaleform;
using namespace Render;
using namespace GFx;

    void initHAL()
    {
        SF::SysAllocMalloc a;
        SF::GFx::System gfxInit(&a);
        SingleThreadCommandQueue* queue = new SingleThreadCommandQueue;
        //m_pCommandQueue = queue;

        Ptr<GL::HAL> m_pRenderHAL = *new GL::HAL(queue);
        //assert(m_pRenderHAL != NULL);
        queue-> pHAL = m_pRenderHAL;
        bool bSuccess;

        //GLenum error = glGetError();
        bSuccess = m_pRenderHAL->InitHAL(GL::HALInitParams());
        assert(bSuccess == true);

    }

    int main()
    {
        initHAL();
    }
4

2 に答える 2

1

通常の操作では、Scaleform は OpenGL エラーを生成しません。を呼び出すとGL::HAL::InitHAL、既存の GL エラー コードがチェックされます。このアサートは、Scaleform を使用する前に現在のコンテキストでエラーが発生したことを警告しています。InitHALサンプルで回避されているように、このアサートを回避するには、呼び出す前に(およびその後HAL::BeginScene/HAL::Display各シーンをレンダリングする前に) glGetError() を呼び出すだけです。

ただし、Scaleform は、現在のスレッドで GL コンテキストが適切に初期化されていることも想定しています。この例では、これを示すコードはありません。glGetError適切に初期化されていない場合は、 (Scaleform 内部で)への呼び出しが失敗している可能性があります。この場合、 を呼び出す前に現在のコンテキストを設定する必要がありますGL::HAL::InitHAL

于 2015-12-16T14:10:30.913 に答える
0

私はこの問題を解決しました。これは、scaleform の InitHAL 関数を呼び出す前にエンジンで GL エラーが報告されるためです。デバッグ モードでは、scaleform がこのエラーを報告します。このメソッドの前に glGetError() を呼び出して、いくつかの修正メソッドを使用するだけです。

于 2016-05-19T08:29:50.310 に答える