main.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Red triangle test
  2. // ../../make --run
  3. let pipeline: gpu_pipeline_t;
  4. let vb: gpu_buffer_t;
  5. let ib: gpu_buffer_t;
  6. function render() {
  7. _gpu_begin(null, null, null, gpu_clear_t.COLOR | gpu_clear_t.DEPTH, 0xff000000, 1.0);
  8. gpu_set_pipeline(pipeline);
  9. gpu_set_vertex_buffer(vb);
  10. gpu_set_index_buffer(ib);
  11. gpu_draw();
  12. gpu_end();
  13. }
  14. function main() {
  15. let ops: iron_window_options_t = {
  16. title : "Iron",
  17. width : 640,
  18. height : 480,
  19. x : -1,
  20. y : -1,
  21. mode : iron_window_mode_t.WINDOW,
  22. features : window_features_t.RESIZABLE | window_features_t.MINIMIZABLE | window_features_t.MAXIMIZABLE,
  23. vsync : true,
  24. frequency : 60,
  25. depth_bits : 32
  26. };
  27. _iron_init(ops);
  28. pipeline = gpu_create_pipeline();
  29. let vs: gpu_vertex_structure_t = {};
  30. gpu_vertex_struct_add(vs, "pos", gpu_vertex_data_t.F32_3X);
  31. let vs_buffer: buffer_t = iron_load_blob("./data/test.vert" + sys_shader_ext());
  32. let fs_buffer: buffer_t = iron_load_blob("./data/test.frag" + sys_shader_ext());
  33. let vert: gpu_shader_t = gpu_create_shader(vs_buffer, gpu_shader_type_t.VERTEX);
  34. let frag: gpu_shader_t = gpu_create_shader(fs_buffer, gpu_shader_type_t.FRAGMENT);
  35. pipeline.vertex_shader = vert;
  36. pipeline.fragment_shader = frag;
  37. pipeline.input_layout = vs;
  38. gpu_pipeline_compile(pipeline);
  39. let vertices: f32[] = [ -1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0 ];
  40. let indices: i32[] = [ 0, 1, 2 ];
  41. vb = gpu_create_vertex_buffer(vertices.length / 3, vs.elements);
  42. let vb_data: buffer_t = gpu_lock_vertex_buffer(vb);
  43. for (let i: i32 = 0; i < vertices.length; i++) {
  44. buffer_set_f32(vb_data, i * 4, vertices[i]);
  45. }
  46. gpu_vertex_buffer_unlock(vb);
  47. ib = gpu_create_index_buffer(indices.length);
  48. let ib_data: u32_array_t = gpu_lock_index_buffer(ib);
  49. for (let i: i32 = 0; i < indices.length; i++) {
  50. ib_data[i] = indices[i];
  51. }
  52. gpu_index_buffer_unlock(ib);
  53. _iron_set_update_callback(render);
  54. }
  55. ////
  56. type config_t = {
  57. server: string;
  58. };
  59. let config_raw: config_t;
  60. function strings_check_internet_connection(): string {
  61. return "";
  62. }
  63. function console_error(s: string) {}
  64. function console_info(s: string) {}
  65. function plugin_embed() {}
  66. function tr(id: string, vars: map_t<string, string> = null): string {
  67. return id;
  68. }
  69. let pipes_offset: i32;
  70. function pipes_get_constant_location(s: string): i32 {
  71. return 0;
  72. }