OpenGL-ES2.0 FrameBuffer内容生存期

时间:2015-09-14 08:54:22

标签: opengl-es-2.0 framebuffer

对于小型2D手机游戏,我计划让主角色纹理由玩家决定(组合装备,颜色,头发......)。 首先,我使用多个纹理(每个都有一些服装,头发,......),加载所需的并在多个通道中渲染角色(例如前面&>后面的头发,身体+布料,头部,头发,头发补充,更多但是,由于质地要求很多次,我不喜欢这种做法。

相反,我正在考虑做类似的事情,但是将完整的角色纹理(衣服,姿势......)渲染成帧缓冲并将其用作纹理(比仅针对当前姿势做更多的工作,但仅限于做了一次)。 我不知道的是帧缓冲内容的生命周期是多少? 在上下文被删除之前,它的内容是否仍然存在,在每次抽奖时都会被清除,......?

由于

1 个答案:

答案 0 :(得分:0)

帧缓冲区有哪些内容可以清除?它是渲染缓冲区或具有可绘制内容的纹理,可以清除。这两个可以从帧缓冲区附加或分离,在这种情况下更像是其他缓冲区的包装。

所以没有,除非如此指定,否则渲染缓冲区和纹理都会清除其内容。除非另有说明,否则不会删除它们。如果删除了所有者上下文,那么它的所有元素也都会消失。

我不完全相信你的解决方案是合适的,但是如果我理解你要做的是创建一个带附加纹理的FBO(帧缓冲对象)。使用帧缓冲区绘制纹理,然后保留纹理。这一切都很好。完成绘图并且纹理可用后,您仍可以删除FBO。如果你需要重新绘制它,你甚至可以在以后重新连接到另一个FBO。

同样“每次平局时清算”似乎有点偏。如果你的意思是在每次绘制之后调用名称缓冲区,那么绝对不会,在绘制每个形状后清除将无法绘制场景。或者更确切地说,如果你的意思是绘制到通常被称为呈现的屏幕,那么许多应用程序使用累积,例如用手指绘制到画布,并且不得清除缓冲区。但是再一次,你甚至不会呈现缓冲区,所以这个事件永远不会发生。