scaleform 4.4.30 关于opengl的问题
scaleform 4.4.30 questions about opengl
我写了一个小demo,没有完成,但是已经可以了运行,当我运行进入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();
}
在正常操作下,Scaleform 不应生成任何 OpenGL 错误。当您调用 GL::HAL::InitHAL
时,它会检查任何现有的 GL 错误代码。此断言警告您在使用 Scaleform 之前在当前上下文中发生了错误。正如您的示例中所规避的那样,您可以在调用 InitHAL
之前简单地调用 glGetError() (随后在渲染每个场景之前调用 HAL::BeginScene
/HAL::Display
)来避免这种断言。
但是,Scaleform 还期望在当前线程上正确初始化 GL 上下文 - 在您的示例中,没有代码显示这一点。如果未正确初始化,则可能是对 glGetError
的调用(在 Scaleform 内部)失败。如果是这种情况,您需要在调用 GL::HAL::InitHAL
.
之前设置当前上下文
我解决了这个问题,那是因为引擎在调用scaleform的InitHAL函数之前报了一些GL错误,在调试模式下,scaleform会报这个错误,我只是用了一些修复方法,在此之前调用了glGetError()方法。
我写了一个小demo,没有完成,但是已经可以了运行,当我运行进入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();
}
在正常操作下,Scaleform 不应生成任何 OpenGL 错误。当您调用 GL::HAL::InitHAL
时,它会检查任何现有的 GL 错误代码。此断言警告您在使用 Scaleform 之前在当前上下文中发生了错误。正如您的示例中所规避的那样,您可以在调用 InitHAL
之前简单地调用 glGetError() (随后在渲染每个场景之前调用 HAL::BeginScene
/HAL::Display
)来避免这种断言。
但是,Scaleform 还期望在当前线程上正确初始化 GL 上下文 - 在您的示例中,没有代码显示这一点。如果未正确初始化,则可能是对 glGetError
的调用(在 Scaleform 内部)失败。如果是这种情况,您需要在调用 GL::HAL::InitHAL
.
我解决了这个问题,那是因为引擎在调用scaleform的InitHAL函数之前报了一些GL错误,在调试模式下,scaleform会报这个错误,我只是用了一些修复方法,在此之前调用了glGetError()方法。