1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-30 18:30:54 +00:00

OpenXR: When visibility mask extension does not return a mask, don't create a mesh

This commit is contained in:
Bastiaan Olij
2025-12-19 16:02:34 +11:00
parent 64cb7e721c
commit 12764858d3

View File

@@ -100,9 +100,6 @@ void OpenXRVisibilityMaskExtension::on_session_created(const XrSession p_instanc
rendering_server->material_set_shader(material, shader);
rendering_server->material_set_render_priority(material, 99);
// Create our mesh.
mesh = rendering_server->mesh_create();
// Get our initial mesh data.
mesh_count = openxr_api->get_view_count(); // We need a mesh for each view.
for (uint32_t i = 0; i < mesh_count; i++) {
@@ -237,6 +234,16 @@ void OpenXRVisibilityMaskExtension::_update_mesh() {
index_count += mesh_data[i].indices.size();
}
if (vertice_count == 0 || index_count == 0) {
// Free our mesh if we have one.
if (mesh.is_valid()) {
rendering_server->free_rid(mesh);
mesh = RID();
}
return;
}
vertices.resize(vertice_count);
indices.resize(index_count);
uint64_t offset = 0;
@@ -263,6 +270,11 @@ void OpenXRVisibilityMaskExtension::_update_mesh() {
offset += mesh_data[i].vertices.size();
}
// Create our mesh if we don't have one yet.
if (mesh.is_null()) {
mesh = rendering_server->mesh_create();
}
// Update our mesh.
Array arr;
arr.resize(RS::ARRAY_MAX);