mirror of
https://github.com/godotengine/godot.git
synced 2025-12-31 01:49:10 +03: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:
@@ -100,9 +100,6 @@ void OpenXRVisibilityMaskExtension::on_session_created(const XrSession p_instanc
|
|||||||
rendering_server->material_set_shader(material, shader);
|
rendering_server->material_set_shader(material, shader);
|
||||||
rendering_server->material_set_render_priority(material, 99);
|
rendering_server->material_set_render_priority(material, 99);
|
||||||
|
|
||||||
// Create our mesh.
|
|
||||||
mesh = rendering_server->mesh_create();
|
|
||||||
|
|
||||||
// Get our initial mesh data.
|
// Get our initial mesh data.
|
||||||
mesh_count = openxr_api->get_view_count(); // We need a mesh for each view.
|
mesh_count = openxr_api->get_view_count(); // We need a mesh for each view.
|
||||||
for (uint32_t i = 0; i < mesh_count; i++) {
|
for (uint32_t i = 0; i < mesh_count; i++) {
|
||||||
@@ -237,6 +234,16 @@ void OpenXRVisibilityMaskExtension::_update_mesh() {
|
|||||||
index_count += mesh_data[i].indices.size();
|
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);
|
vertices.resize(vertice_count);
|
||||||
indices.resize(index_count);
|
indices.resize(index_count);
|
||||||
uint64_t offset = 0;
|
uint64_t offset = 0;
|
||||||
@@ -263,6 +270,11 @@ void OpenXRVisibilityMaskExtension::_update_mesh() {
|
|||||||
offset += mesh_data[i].vertices.size();
|
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.
|
// Update our mesh.
|
||||||
Array arr;
|
Array arr;
|
||||||
arr.resize(RS::ARRAY_MAX);
|
arr.resize(RS::ARRAY_MAX);
|
||||||
|
|||||||
Reference in New Issue
Block a user