Hi,
ich versuche momentan in Opengl verschiedene Texturen in eine Textur zu rendern und diese anschließend in den Main framebuffer zu zeichnen.
Mein Fragment shader sieht so aus:
Das erstellen des Framebuffers funktioniert allerdings wenn ich dann color_tex zeichnen möchte passiert einfach nichts, die Textur wird nicht gezeichnet.. Habt ihr eine Idee was ich falsch mache?
ich versuche momentan in Opengl verschiedene Texturen in eine Textur zu rendern und diese anschließend in den Main framebuffer zu zeichnen.
C-Quellcode
- glGenTextures(1, &color_tex);
- glBindTexture(GL_TEXTURE_2D, color_tex);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- //NULL means reserve texture memory, but texels are undefined
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
- //-------------------------
- glGenFramebuffers(1, &fb);
- glBindFramebuffer(GL_FRAMEBUFFER, fb);
- //Attach 2D texture to this FBO
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, color_tex, 0);
- //-------------------------
- glGenRenderbuffers(1, &depth_rb);
- glBindRenderbuffer(GL_RENDERBUFFER, depth_rb);
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 256, 256);
- //-------------------------
- //Attach depth buffer to FBO
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_rb);
- //-------------------------
- //Does the GPU support current FBO configuration?
- GLenum status;
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- switch(status)
- {
- case GL_FRAMEBUFFER_COMPLETE:
- cout<<"good";
- default:
- HANDLE_THE_ERROR;
- }
- //-------------------------
- //and now you can render to GL_TEXTURE_2D
- glBindFramebuffer(GL_FRAMEBUFFER, fb);
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glClearDepth(1.0f);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- //-------------------------
- glViewport(0, 0, 256, 256);
- //draw frame buffer
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- //draw to main framebuffer
Mein Fragment shader sieht so aus:
Das erstellen des Framebuffers funktioniert allerdings wenn ich dann color_tex zeichnen möchte passiert einfach nichts, die Textur wird nicht gezeichnet.. Habt ihr eine Idee was ich falsch mache?