我希望在我的程序中渲染n个纹理并将它们存储以备后用。因此,我使用OpenGL FramebufferObject。
首先,我创建了一个包含128个纹理的数组,如下所示:
第二步是一个循环,有128个迭代,在每个迭代中我将纹理绑定到位置i并渲染它。
最后一步是另一个循环,即MainGameLoop,在此循环中,我使用纹理数组中的一个纹理呈现平面。
但是出现了问题,屏幕仍然黑屏。
首先,我创建了一个包含128个纹理的数组,如下所示:
self.textures = glGenTexture(128)
第二步是一个循环,有128个迭代,在每个迭代中我将纹理绑定到位置i并渲染它。
glBindTexture(GL_TEXTURE_2D, self.texture[i])
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, None);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, self.texture[i], 0);
renderScene()
最后一步是另一个循环,即MainGameLoop,在此循环中,我使用纹理数组中的一个纹理呈现平面。
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(0,0,1,0,0,0,0,1,0)
glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D, self.texture[i])
glBegin(GL_QUADS)
glNormal3f(0.0, 1.0, 0.0)
glTexCoord2f(0.0, 0.0)
glVertex3f(-1, 1, -1)
glTexCoord2f(1.0, 0.0)
glVertex3f(1, 1, -1)
glTexCoord2f(1.0, 1.0)
glVertex3f(1, -1, -1)
glTexCoord2f(0.0, 1.0)
glVertex3f(-1, -1, -1)
glEnd();
glDisable(GL_TEXTURE_2D)
但是出现了问题,屏幕仍然黑屏。