Ich erstelle eine Textur als Rendertarget...
Code: Alles auswählen
glGenTextures( 1, &mTexturId);
glTextureImage2DEXT( mTexturId, GL_TEXTURE_2D, 0, GL_R32F, 1024, 1024, 0, GL_RED, GL_FLOAT, nullptr);
glTextureParameteriEXT( mTexturId, GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
Code: Alles auswählen
glGenFramebuffers( 1, &mFrameBufferId);
glNamedFramebufferTextureEXT( mFrameBufferId, GL_COLOR_ATTACHMENT0, obigeTexturId, 0);
glNamedFramebufferRenderbufferEXT( mFrameBufferId, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, zBufferId);
GLenum fz = GL_COLOR_ATTACHMENT0;
glFramebufferDrawBuffersEXT( mFrameBufferId, 1, &fz);
auto status = glCheckNamedFramebufferStatusEXT( mFrameBufferId, GL_FRAMEBUFFER);
Detailfrage: woran könnte es liegen, dass ich die Textur nicht in einem Framebuffer verwenden kann.
Allgemeinfrage: wie sichert man sich bei OpenGL allgemein gegen solche Probleme ab? Wie sieht eine vernünftige Fehlerbehandlung bei OpenGL aus? Rückgabewerte gibt es ja keine, und glGetError() soll angeblich einen Sync mit dem Treiberthread auslösen, was jede Performance ruinieren würde.