Opengl 基于状态的GL_INVALID_操作如何导致glTexImage2d失败?
我有截取OpenGL应用程序调用的软件(在某些情况下执行其他任务)。出于某种原因,当我截获特定应用程序时,此调用:Opengl 基于状态的GL_INVALID_操作如何导致glTexImage2d失败?,opengl,Opengl,我有截取OpenGL应用程序调用的软件(在某些情况下执行其他任务)。出于某种原因,当我截获特定应用程序时,此调用: glTexImage2D(target= GL_TEXTURE_2D, level= 0, internalformat= 4, width= 256, height= 2, border= 0, format= GL_RGBA, type= GL_UNSIGNED_BYTE, pixels= 0) 导致GL\U操作无效。然而,当我运行它时没有拦截,只是调试日志记录,它不会导致错
glTexImage2D(target= GL_TEXTURE_2D, level= 0, internalformat= 4, width= 256, height= 2, border= 0, format= GL_RGBA, type= GL_UNSIGNED_BYTE, pixels= 0)
导致GL\U操作无效。然而,当我运行它时没有拦截,只是调试日志记录,它不会导致错误。我已经阅读了这个函数的说明,它似乎不仅表明在给定这个输入的情况下,这个特定的错误是不可能的,而且它只能由参数本身引起,而不是基于状态的问题
另外,请注意,我已经确认,该错误实际上仅在调用glTexImage2d()之后发生
这是怎么回事 这可能有助于更好地描述你实际上在做什么。听起来你好像在调用glTexImage2D,这是一个用户定义的函数,然后在openGL中调用glTexImage2D?我们有一个“假的”openGL库,所有主机调用都会被重新路由到该库。然后,在伪opengl函数中,我们要么将调用传递给真实函数,要么执行其他操作。其目的是为光线跟踪收集信息。您确定您使用的openGL具有该功能的实现吗?此外,您是否在“伪”openGL层中正确设置了openGL环境?@user2345397:这些参考页非常不完整,尤其是错误部分。您最好在实际规范中查找这些内容。
GL\u INVALID\u操作
可能有一些原因,例如“像素解包缓冲区对象已绑定,存储纹理数据将访问像素解包缓冲区末尾以外的内存。”