OpenGL-ES2.0 FrameBuffer 内容生命周期
OpenGL-ES2.0 FrameBuffer content lifetime
对于一款小型2D手机游戏,我打算让主角的材质由玩家决定(组合服装、颜色、头发……)。
首先,我虽然使用了多个纹理(每个都有一些服装、头发……),但加载了所需的并在多个通道中渲染角色(例如前面=>后面的头发,body+布料,头,头发,头发补充,更多的头发),但由于调用了很多次纹理,我不喜欢这种方法。
相反,我正在考虑做类似的事情,但是将完整的角色纹理(衣服,姿势,..)渲染到帧缓冲区中并将其用作纹理(比只为当前姿势做更多的工作,但只做过一次)。
我不知道帧缓冲区内容的生命周期是多少?
它的内容是否一直保留到上下文被删除,它在每次绘制时被清除,..?
谢谢
帧缓冲区有哪些内容可以清除?它是具有可绘制内容并且可以被清除的渲染缓冲区或纹理。这两个可以从帧缓冲区附加或分离,在这种情况下更像是其他缓冲区的包装器。
因此none,渲染缓冲区或纹理将清除其内容,除非另有说明。 None 除非再次如此指定,否则将删除其中的 None 个。如果所有者上下文被删除,那么它的所有元素也会消失。
我不完全相信你的解决方案是合适的,但如果我理解你正在尝试做的是创建一个带有附加纹理的 FBO(帧缓冲区对象)。使用帧缓冲区绘制到纹理,然后保留纹理。这一切都很好。在绘制完成并且纹理可用后,您仍然可以删除 FBO。例如,如果您需要重新绘制它,您甚至可以稍后将其重新连接到另一个 FBO。
另外 "cleared at each draw" 似乎有点不对劲。如果你的意思是在每次调用 fame buffer 之后调用 fame buffer,那绝对不是,在绘制完每个形状后清除会导致无法绘制场景。或者更确切地说,如果你的意思是绘制到屏幕上,这通常被称为呈现,那么又不,许多应用程序使用累积,例如用手指绘制到 canvas 并且缓冲区不能被清除。但是话又说回来,你甚至不会呈现缓冲区,所以这个事件永远不会发生。
对于一款小型2D手机游戏,我打算让主角的材质由玩家决定(组合服装、颜色、头发……)。 首先,我虽然使用了多个纹理(每个都有一些服装、头发……),但加载了所需的并在多个通道中渲染角色(例如前面=>后面的头发,body+布料,头,头发,头发补充,更多的头发),但由于调用了很多次纹理,我不喜欢这种方法。
相反,我正在考虑做类似的事情,但是将完整的角色纹理(衣服,姿势,..)渲染到帧缓冲区中并将其用作纹理(比只为当前姿势做更多的工作,但只做过一次)。 我不知道帧缓冲区内容的生命周期是多少? 它的内容是否一直保留到上下文被删除,它在每次绘制时被清除,..?
谢谢
帧缓冲区有哪些内容可以清除?它是具有可绘制内容并且可以被清除的渲染缓冲区或纹理。这两个可以从帧缓冲区附加或分离,在这种情况下更像是其他缓冲区的包装器。
因此none,渲染缓冲区或纹理将清除其内容,除非另有说明。 None 除非再次如此指定,否则将删除其中的 None 个。如果所有者上下文被删除,那么它的所有元素也会消失。
我不完全相信你的解决方案是合适的,但如果我理解你正在尝试做的是创建一个带有附加纹理的 FBO(帧缓冲区对象)。使用帧缓冲区绘制到纹理,然后保留纹理。这一切都很好。在绘制完成并且纹理可用后,您仍然可以删除 FBO。例如,如果您需要重新绘制它,您甚至可以稍后将其重新连接到另一个 FBO。
另外 "cleared at each draw" 似乎有点不对劲。如果你的意思是在每次调用 fame buffer 之后调用 fame buffer,那绝对不是,在绘制完每个形状后清除会导致无法绘制场景。或者更确切地说,如果你的意思是绘制到屏幕上,这通常被称为呈现,那么又不,许多应用程序使用累积,例如用手指绘制到 canvas 并且缓冲区不能被清除。但是话又说回来,你甚至不会呈现缓冲区,所以这个事件永远不会发生。