scaleform 4.4.30 вопросы о opengl

Я пишу небольшую демонстрацию, не законченную, но уже могу запустить, когда я сталкиваюсь с bSuccess = m_pRenderHAL->InitHAL(GL::HALInitParams()); появилась ошибка GL,

Утверждение: ошибка GL перед GraphicsDeviceImmediate::Initialize (0x502).

в чем причина, некоторые настройки не верны?

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();
    }

2 ответа

Решение

При нормальной работе Scaleform не должна генерировать никаких ошибок OpenGL. Когда вы звоните GL::HAL::InitHAL, он проверяет любые существующие коды ошибок GL. Это утверждение предупреждает вас, что в текущем контексте произошла ошибка перед использованием Scaleform. Как указано в вашем примере, вы можете просто вызвать glGetError() перед вызовом InitHAL (и впоследствии HAL::BeginScene/HAL::Display перед рендерингом каждой сцены), чтобы избежать этого утверждения.

Тем не менее, Scaleform также ожидает, что контекст GL правильно инициализируется в текущем потоке - в вашем примере нет кода, показывающего это. Если это не инициализировано должным образом, это вероятно вызов glGetError (внутренне в Scaleform) не удается. Если это так, вам нужно будет установить текущий контекст перед вызовом GL::HAL::InitHAL,

Я решил эту проблему, потому что в движке перед вызовом функции InitHAL от Scaleform сообщается об ошибке GL, когда в режиме отладки Scaleform сообщит об этой ошибке, я просто использую метод исправления, вызывающий glGetError() перед этим методом.

Другие вопросы по тегам