Hi everyone,
I'd like to start rendering to slices of a texture array but it doesn't seems to exist a lot of documentation on that, and so here's the snippet I came up with in the hope that someone is able to spot any possibile problem:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | glBindTexture(GL_TEXTURE_2D_ARRAY, textureArray);
for(u32 textureIndex = 0; textureIndex < MAX_TEXTURE_COUNT; ++textureIndex)
{
glFramebufferTextureLayer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureArray, 0, textureIndex);
glViewport(0, 0, MAX_IMAGE_DIM, MAX_IMAGE_DIM);
glScissor(0, 0, MAX_IMAGE_DIM, MAX_IMAGE_DIM);
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, MAX_IMAGE_DIM, MAX_IMAGE_DIM);
glScissor(0, 0, MAX_IMAGE_DIM, MAX_IMAGE_DIM);
glBindBuffer(GL_ARRAY_BUFFER, opengl.screenFillVertexBuffer);
OpenGLStartProgram(testTextureGen);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
OpenGLEndProgram(testTextureGen);
}
glBindTexture(GL_TEXTURE_2D_ARRAY, 0);
glBindFrameBuffer(GL_DRAW_FRAMEBUFFER, 0);
|
The "testTextureGen" program just output a fixed color.
I'm currently placing this code at the very beginning of the opengl rendering, and even if at the moment it _seems_ to be working (textures are cleared and color is rendered to the texture) it seems that I'm screwing up the framebuffers when I let this code run, and in fact if I place this code "in the middle" of the rendering loop, I just get a black screen. (Of course the final call to "unbind" the framebuffer is different there)
I feel like I'm missing some "unbind" calls to tell opengl "ok I've finished drawing to this texture layer, now just please get back to normal business"... but I just don't know what it is.
Thanks in advance.
Leonardo