opengl 在Godot中,如何在每个渲染帧的GL纹理ID上运行逻辑?

5f0d552i  于 2023-10-18  发布在  Go
关注(0)|答案(1)|浏览(129)

我正在试用Godot 4.1。
我需要将每一个渲染的帧路由到gstreamer管道中。
我的第一React是获取GL纹理句柄和目标,并使用它们来构造一个GstGLBuffer,然后将其提供给管道。
我可以创建一个扩展Node和var tex = get_viewport().get_texture()的gdscript,并检查它的宽度和高度。但是如果我调用RenderingServer.texture_get_native_handcle(tex,true),它总是给我0。我从_process()回调中尝试了这段代码,还尝试了从_ready()执行await RenderingServer.frame_post_draw的循环,后面跟着探索逻辑。
有没有一个例子,说明如何将渲染的帧馈送到gstreamer中,或者至少说明如何获得GL句柄和渲染目标(TARGET_2D或OES古怪)?

j7dteeu8

j7dteeu81#

ViewportTexture不是真实的纹理。这是一个代理纹理。ViewportTextureRID实际上是一个占位符纹理资源ID。
要获取最后渲染帧纹理的本机句柄,请使用以下代码:

var rid = RenderingServer.viewport_get_texture(get_viewport().get_viewport_rid())
var handle = RenderingServer.texture_get_native_handle(tex_rid)

相关问题