根据OpenGL 文档,我应该能够将像素读取源设置为任何GL_COLOR_ATTACHMENTi
. 但是,当我尝试这个时,glGetError
给了我一个GL_INVALID_ENUM
错误。随后glReadPixels
的只是读取后台缓冲区。
报告的版本glGetString(GL_VERSION)
是4.2.11627 Core Profile Forward-Compatible Context
。我在 linux 上运行并安装了 fglrx ati 驱动程序(版本 8.96.7-120312a-135598C-ATI)。
我检查了我的 FBO 是否已绑定且完整。我还验证了glGetError
不是由先前的调用设置的。
它已经失败了(我希望这里有一个错误,而INVALID_OPERATION
不是INVALID_ENUM
):
#include <iostream>
#include "Window.h" // My own class based on sfml, but I am sure context creation works fine
#include <glload/gll.hpp>
#include <glload/gl_core.hpp>
int main()
{
const unsigned int screenW = 1280, screenH = 720;
Window w(screenW, screenH, 32, false);
if (glload::LoadFunctions() == glload::LS_LOAD_FAILED)
{
std::cerr << "glload failed to load" << std::endl;
return -1;
}
gl::ReadBuffer(gl::GL_COLOR_ATTACHMENT0);
if( gl::GetError() == gl::GL_INVALID_ENUM)
{
std::cerr << "Invalid enum error" << std::endl;
return -1;
}
return 0;
}
这个调用可能触发还有另一个原因,INVALID_ENUM
还是我使用的 OpenGL 实现更有可能被窃听?