解决使用GLFW库创建OpenGL程序无法用NSight调试问题

    如果程序中使用了GLEW库来创建OpenGL程序,即使只是简单地清除窗口程序,用Nsight调试也会报错API错误;

Caption

    这是因为GLEW有一个历史悠久的bug,调用glewInit()会设置一个GL_INVALID_ENUM的错误标记,所以第一次调用glGetError永远会猝不及防地给你返回一个错误代码,导致Nsight调试时出现API错误;

解决方案:

    在调用glewInit()后,仅仅调用glGetError(),而不要使用_Assert(glGetError());这是因为glGetError一旦被调用,它会清除所有的错误标记(在分布式系统上只会清除一个)。通过这样将会清除掉glewInit()函数调用产生的Bug;

    如果没有使用Glad加载OpenGL函数,需要在调用glewInit之后立即调用glGetError消除这个标记:

    如果程序中使用了GLAD加载了函数指针地址,需要在调用之后立即使用glGetError消除错误;

    修改后Nsight调试如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值