我的代码完全在显卡 OpenGL 下工作。
但是,当我使用 GDI 通用 OpenGL 驱动程序切换到 OpenGL 仿真时,我得到了非常奇怪的错误:
GL ERROR - 函数 glBindTexture(GL_TEXTURE_2D,1) 生成错误 GL_INVALID_ENUM
glBindTexture() 的文档说只有在目标枚举错误的情况下才能返回 GL_INVALID_ENUM。然而 GL_TEXTURE_2D 是正确的枚举 - 适用于显卡 OpenGL 驱动程序。
我确信:1)glBindTexture 正在生成该错误 - 使用带有错误日志记录的 GLIntercept 跟踪器 2)分配了纹理,大小为 512 x 4 3)为纹理分配了数据:glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_textureImage .width(), m_textureImage.height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, m_textureImage.bits()); 4) 为纹理分配数据和实际使用纹理之间的 OpenGL 上下文不会改变 - 你的纹理在两者之间是未绑定的
是否还有其他未记录的原因可以返回此类错误?任何想法如何找到问题?