Files
armorpaint/base/tests/triangle/main.ts
T

70 lines
1.9 KiB
TypeScript
Raw Normal View History

2024-11-10 22:11:29 +01:00
// Red triangle test
2025-04-01 11:08:07 +02:00
// ../../make --run
2024-11-10 22:11:29 +01:00
2025-06-19 19:55:16 +02:00
let pipeline: gpu_pipeline_t;
2025-08-31 19:23:37 +02:00
let vb: gpu_buffer_t;
let ib: gpu_buffer_t;
2024-11-10 22:11:29 +01:00
function render() {
2025-07-01 14:46:40 +02:00
_gpu_begin(null, null, null, clear_flag_t.COLOR | clear_flag_t.DEPTH, 0xff000000, 1.0);
2025-06-19 19:55:16 +02:00
gpu_set_pipeline(pipeline);
gpu_set_vertex_buffer(vb);
gpu_set_index_buffer(ib);
2025-04-24 22:19:44 +02:00
gpu_draw();
2025-06-19 19:55:16 +02:00
gpu_end();
2024-11-10 22:11:29 +01:00
}
function main() {
2025-04-01 11:08:07 +02:00
let ops: iron_window_options_t = {
title: "Iron",
width: 640,
height: 480,
x: -1,
y: -1,
mode: window_mode_t.WINDOWED,
features: window_features_t.RESIZABLE | window_features_t.MINIMIZABLE | window_features_t.MAXIMIZABLE,
vsync: true,
frequency: 60,
2025-07-01 14:46:40 +02:00
depth_bits: 32
2025-04-01 11:08:07 +02:00
};
_iron_init(ops);
2024-11-10 22:11:29 +01:00
2025-03-10 20:38:53 +01:00
pipeline = gpu_create_pipeline();
2025-08-04 19:34:53 +02:00
let vs: gpu_vertex_structure_t = {};
2025-04-01 11:08:07 +02:00
gpu_vertex_struct_add(vs, "pos", vertex_data_t.F32_3X);
let vs_buffer: buffer_t = iron_load_blob("./data/test.vert" + sys_shader_ext());
let fs_buffer: buffer_t = iron_load_blob("./data/test.frag" + sys_shader_ext());
2025-08-31 19:23:37 +02:00
let vert: gpu_shader_t = gpu_create_shader(vs_buffer, shader_type_t.VERTEX);
let frag: gpu_shader_t = gpu_create_shader(fs_buffer, shader_type_t.FRAGMENT);
2025-03-02 19:44:26 +01:00
pipeline.vertex_shader = vert;
pipeline.fragment_shader = frag;
2025-04-01 11:08:07 +02:00
pipeline.input_layout = vs;
2025-06-19 23:30:32 +02:00
gpu_pipeline_compile(pipeline);
2025-02-27 20:24:59 +01:00
let vertices: f32[] = [
-1.0, -1.0, 0.0,
1.0, -1.0, 0.0,
0.0, 1.0, 0.0
];
let indices: i32[] = [0, 1, 2];
2024-11-10 22:11:29 +01:00
2025-08-31 19:23:37 +02:00
vb = gpu_create_vertex_buffer(vertices.length / 3, vs.elements);
2025-03-10 20:38:53 +01:00
let vb_data: buffer_t = gpu_lock_vertex_buffer(vb);
2024-11-10 22:11:29 +01:00
for (let i: i32 = 0; i < vertices.length; i++) {
buffer_set_f32(vb_data, i * 4, vertices[i]);
}
2025-06-19 19:55:16 +02:00
gpu_vertex_buffer_unlock(vb);
2024-11-10 22:11:29 +01:00
2025-03-10 20:38:53 +01:00
ib = gpu_create_index_buffer(indices.length);
let ib_data: u32_array_t = gpu_lock_index_buffer(ib);
2024-11-10 22:11:29 +01:00
for (let i: i32 = 0; i < indices.length; i++) {
ib_data[i] = indices[i];
}
2025-06-19 19:55:16 +02:00
gpu_index_buffer_unlock(ib);
2024-11-10 22:11:29 +01:00
2025-03-09 17:02:12 +01:00
_iron_set_update_callback(render);
2024-11-10 22:11:29 +01:00
}
2025-08-31 19:23:37 +02:00
2025-09-01 21:42:49 +02:00
function tr(id: string, vars: map_t<string, string> = null): string { return id; }