This commit is contained in:
luboslenco
2025-03-18 10:39:23 +01:00
parent a0bdeffc8f
commit a8a05deffc
25 changed files with 407 additions and 523 deletions
+7 -7
View File
@@ -165,13 +165,13 @@ function mesh_data_get_vertex_array(raw: mesh_data_t, name: string): vertex_arra
return null;
}
function mesh_data_get(raw: mesh_data_t, vs: vertex_element_t[]): iron_gpu_vertex_buffer_t {
function mesh_data_get(raw: mesh_data_t, vs: vertex_element_t[]): iron_gpu_buffer_t {
let key: string = "";
for (let i: i32 = 0; i < vs.length; ++i) {
let e: vertex_element_t = vs[i];
key += e.name;
}
let vb: iron_gpu_vertex_buffer_t = map_get(raw._.vertex_buffer_map, key);
let vb: iron_gpu_buffer_t = map_get(raw._.vertex_buffer_map, key);
if (vb == null) {
let vertex_arrays: vertex_array_t[] = [];
let has_tex: bool = false;
@@ -201,7 +201,7 @@ function mesh_data_get(raw: mesh_data_t, vs: vertex_element_t[]): iron_gpu_verte
vb = gpu_create_vertex_buffer(math_floor(positions.values.length / size), vstruct, usage_t.STATIC);
raw._.vertices = gpu_lock_vertex_buffer(vb);
mesh_data_build_vertices(raw._.vertices, vertex_arrays, 0, has_tex && uvs == null, tex_offset);
gpu_vertex_buffer_unlock_all(vb);
iron_gpu_vertex_buffer_unlock_all(vb);
map_set(raw._.vertex_buffer_map, key, vb);
if (has_tex && uvs == null) {
iron_log("Geometry " + raw.name + " is missing UV map");
@@ -223,7 +223,7 @@ function mesh_data_build(raw: mesh_data_t) {
raw._.vertex_buffer = gpu_create_vertex_buffer(math_floor(positions.values.length / size), raw._.structure, usage_t.STATIC);
raw._.vertices = gpu_lock_vertex_buffer(raw._.vertex_buffer);
mesh_data_build_vertices(raw._.vertices, raw.vertex_arrays);
gpu_vertex_buffer_unlock_all(raw._.vertex_buffer);
iron_gpu_vertex_buffer_unlock_all(raw._.vertex_buffer);
let struct_str: string = "";
for (let i: i32 = 0; i < raw._.structure.size; ++i) {
@@ -239,7 +239,7 @@ function mesh_data_build(raw: mesh_data_t) {
if (id.length == 0) {
continue;
}
let index_buffer: iron_gpu_index_buffer_t = gpu_create_index_buffer(id.length);
let index_buffer: iron_gpu_buffer_t = gpu_create_index_buffer(id.length);
let indices_array: u32_array_t = gpu_lock_index_buffer(index_buffer);
for (let i: i32 = 0; i < indices_array.length; ++i) {
@@ -340,13 +340,13 @@ function mesh_data_calculate_aabb(raw: mesh_data_t): vec4_t {
function mesh_data_delete(raw: mesh_data_t) {
let vertex_buffer_keys: string[] = map_keys(raw._.vertex_buffer_map);
for (let i: i32 = 0; i < vertex_buffer_keys.length; ++i) {
let buf: iron_gpu_vertex_buffer_t = map_get(raw._.vertex_buffer_map, vertex_buffer_keys[i]);
let buf: iron_gpu_buffer_t = map_get(raw._.vertex_buffer_map, vertex_buffer_keys[i]);
if (buf != null) {
gpu_delete_vertex_buffer(buf);
}
}
for (let i: i32 = 0; i < raw._.index_buffers.length; ++i) {
let buf: iron_gpu_index_buffer_t = raw._.index_buffers[i];
let buf: iron_gpu_buffer_t = raw._.index_buffers[i];
gpu_delete_index_buffer(buf);
}
}