Skip to content

Commit 6651e90

Browse files
committed
fix(NDIOutput): Use different API for obtaining viewport texture rid to support OpenGL
1 parent 9164abb commit 6651e90

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/viewport_texture_router.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,19 @@ void ViewportTextureRouter::request_textures() {
6464
Viewport *vp = Object::cast_to<Viewport>(vps.keys()[i]);
6565
ERR_CONTINUE_MSG(vp == nullptr, "Viewport was deleted but not unregistered");
6666

67-
Ref<ViewportTexture> texture = vp->get_texture();
68-
ERR_FAIL_COND_MSG(texture.is_null(), "Couldn't get Viewport Texture");
67+
RID viewport_rid = vp->get_viewport_rid();
68+
ERR_CONTINUE_MSG(!viewport_rid.is_valid(), "Viewport RID is invalid");
6969

70-
RID rd_texture_rid = rs->texture_get_rd_texture(texture->get_rid());
71-
texture.unref();
70+
RID texture_rid = rs->viewport_get_texture(viewport_rid);
71+
ERR_CONTINUE_MSG(!texture_rid.is_valid(), "Viewport texture RID is invalid");
72+
73+
RID rd_texture_rid = rs->texture_get_rd_texture(texture_rid);
7274
ERR_FAIL_COND_MSG(!rd_texture_rid.is_valid(), "Couldn't get viewport texture's RID on the RenderingDevice");
7375

7476
Ref<RDTextureFormat> texture_format = rd->texture_get_format(rd_texture_rid);
7577
ERR_FAIL_COND_MSG(texture_format.is_null(), "Couldn't get viewport texture format");
7678

77-
rd->texture_get_data_async(rd_texture_rid, 0, callable_mp(this, &ViewportTextureRouter::forward_texture).bind(texture_format, vp->get_viewport_rid().get_id()));
79+
rd->texture_get_data_async(rd_texture_rid, 0, callable_mp(this, &ViewportTextureRouter::forward_texture).bind(texture_format, viewport_rid.get_id()));
7880
}
7981
}
8082

0 commit comments

Comments
 (0)