PDA

View Full Version : GL_INVALID_OPERATION at glFramebufferTexture2DEXT



Christian Knudsen
26-06-2012, 06:25 PM
I'm trying to get a basic FBO up and running, but I'm getting a GL_INVALID_OPERATION error when trying to assign a texture to the FBO. I'm on WindowsXP and am programming in Freepascal with SDL as the context wrapper. Here's a code snippet:



glEnable(GL_TEXTURE_2D);
glClearColor(0.0, 0.0, 0.0, 0.0);
glViewport(0, 0, 800, 600);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 800, 600, 0.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_LIGHTING);
glShadeModel(GL_SMOOTH);

[...]

TempSurface := IMG_Load('gfx/logo.png');
glGenTextures(1, @TexID);
glBindTexture(GL_TEXTURE_2D, TexID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 4, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, TempSurface^.pixels);
SDL_FreeSurface(TempSurface);

[...]

IF glext_LoadExtension('GL_EXT_framebuffer_object') THEN BEGIN
glGenFramebuffersEXT(1, @FBO);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBO);
// NO ERROR HERE
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, TexID, 0);
// GL_INVALID_OPERATION RETURNED HERE!
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
END;


I can't figure out what I'm doing wrong here...

Christian Knudsen
26-06-2012, 10:55 PM
It was the texture's internal format. I had to change it to GL_RGBA instead of 4.