osg学习(四十八)Windows Error #2000

在执行osg相关操作时遇到Windows Error #2000,原因是加载.earth文件时修改了OpenGL上下文环境,导致像素格式不匹配。错误发生在恢复前一个OpenGL上下文时,因记录的hglrc与实际hdc的像素格式不符。解决方案包括修改osg源码或正确管理makecurrent调用以避免像素格式冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows Error #2000: Win32WindowingSystem::OpenGLContext() - Unable to restore current OpenGL rendering context. Reason: 无效的像素格式。

执行完

osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("mb_tiles.earth",myReadOptions);

后再执行

    QOpenGLFramebufferObjectFormat format;
    format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
    format.setSamples(4);
    auto fbo = new QOpenGLFramebufferObject(size, format);

会报上述错误。

如果改成

osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("cow.osg");

则不会报错。

该错误是在这里产生的

osgViewer/GraphicsWindowWin32.cpp
Win32WindowingSystem::OpenGLContext::~OpenGLContext()
{
    if (_restorePreviousOnExit && _previousHglrc!=_hglrc && !::wglMakeCurrent(_previousHdc, _previousHglrc))
    {
        reportError("W
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值