首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于opengl的4.4.30个问题

关于opengl的4.4.30个问题
EN

Stack Overflow用户
提问于 2015-11-13 07:47:16
回答 2查看 175关注 0票数 1

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

Assert: GL错误发生在GraphicsDeviceImmediate::Initialize (0x502)之前。

原因是什么,某些设置不正确?

代码语言:javascript
复制
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();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-16 14:10:30

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

但是,Scaleform还期望在当前线程上正确初始化GL上下文--在您的示例中,没有显示这一点的代码。如果没有正确初始化它,那么对glGetError (在Scaleform内部)的调用可能会失败。如果是这样,则需要在调用GL::HAL::InitHAL之前设置当前上下文。

票数 1
EN

Stack Overflow用户

发布于 2016-05-19 08:29:50

我解决了这个问题,这是因为在引擎中调用scaleform的InitHAL函数之前会报告一些GL错误,在调试模式下,scaleform会报告这个错误,我只是使用一些fix方法,在这个方法之前调用glGetError()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33687921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档