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

Merge pull request #114181 from BastiaanOlij/fix_openxr_visibility_nomask

OpenXR: Don't create a visibility mask mesh without data
This commit is contained in:
Rémi Verschelde
2025-12-21 10:41:17 +01:00

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);