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実装にバグがある可能性が高いですか?