scaleform 4.4.30有关opengl的问题

scaleform 4.4.30有关opengl的问题,opengl,scaleform,Opengl,Scaleform,我编写了一个小演示,尚未完成,但已经可以运行了,当我运行到bSuccess=m_pRenderHAL->InitHAL(GL::HALInitParams())出现GL错误 断言:GraphicsDeviceMiddate::Initialize(0x502)之前的GL错误 原因是什么,某些设置不正确吗 namespace SF = Scaleform; using namespace Scaleform; using namespace Render; using namespace GFx;

我编写了一个小演示,尚未完成,但已经可以运行了,当我运行到bSuccess=m_pRenderHAL->InitHAL(GL::HALInitParams())出现GL错误

断言:GraphicsDeviceMiddate::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();
    }
namespace SF=Scaleform;
使用名称空间Scaleform;
使用名称空间渲染;
使用名称空间GFx;
void initHAL()
{
SF::SysAllocMalloc a;
SF::GFx::系统gfxInit(&a);
SingleThreadCommandQueue*queue=新建SingleThreadCommandQueue;
//m_pCommandQueue=队列;
Ptr m_pRenderHAL=*新GL::HAL(队列);
//断言(m_pRenderHAL!=NULL);
队列->pHAL=m_pRenderHAL;
成功;
//GLenum error=glGetError();
bSuccess=m_pRenderHAL->InitHAL(GL::HALInitParams());
断言(bSuccess==true);
}
int main()
{
initHAL();
}

在正常操作下,Scaleform不应生成任何OpenGL错误。当您调用
GL::HAL::InitHAL
时,它会检查是否存在任何现有的GL错误代码。此断言警告您,在使用Scaleform之前,当前上下文中发生了错误。正如在示例中避免的那样,您可以在调用
InitHAL
(随后在渲染每个场景之前调用
HAL::BeginScene
/
HAL::Display
)之前简单地调用glGetError(),以避免此断言


但是,Scaleform还要求在当前线程上正确初始化GL上下文-在您的示例中,没有代码显示这一点。如果未正确初始化,则对
glGetError
(在Scaleform内部)的调用可能会失败。如果是这种情况,您需要在调用
GL::HAL::InitHAL
之前设置当前上下文。我解决了这个问题,这是因为在引擎中,在调用scaleform的InitHAL函数之前报告了一些GL错误,在调试模式下,scaleform将报告此错误,我只是使用一些修复方法,调用glGetError()在这种方法之前