Guest User

Untitled

a guest
Jul 26th, 2026
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include <renderkid/vertex_stage.hpp>
  2. #include <renderkid.hpp>
  3. #include <glm/mat4x4.hpp>
  4.  
  5. #define GLM_ENABLE_EXPERIMENTAL
  6.  
  7. #include <glm/gtx/string_cast.hpp>
  8. #include <glm/vec4.hpp>
  9. #include <vector>
  10. #include <tuple>
  11. #include <utility>
  12. #include <algorithm>
  13. #include <iostream>
  14.  
  15. std::vector<_vertex::Vertex> _vertex::vertex_data;
  16.  
  17.  
  18. void _vertex::VertexStage::process_vertex_data(uint8_t primitive_type,
  19. const std::vector<_vertex::Vertex> &vertex_data) {
  20. size_t primitive_size = 0;
  21.  
  22. switch (primitive_type) {
  23. case POINTS:
  24. primitive_size = 1;
  25. break;
  26. case LINES:
  27. primitive_size = 2;
  28. break;
  29. case TRIANGLES:
  30. primitive_size = 3;
  31. break;
  32. }
  33.  
  34. for (size_t i = 0; i < vertex_data.size(); i += primitive_size) {
  35. _vertex::Vertex vertex_a = vertex_data[i];
  36. _vertex::Vertex vertex_b = vertex_data[i + 1];
  37. _vertex::Vertex vertex_c = vertex_data[i + 2];
  38.  
  39. switch (primitive_type) {
  40. case POINT_PRIMITIVE:
  41.  
  42. break;
  43. case LINE_PRIMITIVE:
  44.  
  45. break;
  46. case TRIANGLE_PRIMITIVE:
  47. do_object_to_clip_space_transform(vertex_a.coords);
  48. do_object_to_clip_space_transform(vertex_b.coords);
  49. do_object_to_clip_space_transform(vertex_c.coords);
  50. do_clip_to_viewport_transform(vertex_a);
  51. do_clip_to_viewport_transform(vertex_b);
  52. do_clip_to_viewport_transform(vertex_c);
  53.  
  54. _vertex::Primitive new_triangle;
  55.  
  56. new_triangle.type = TRIANGLE_PRIMITIVE;
  57. new_triangle.vertices = {vertex_a, vertex_b, vertex_c};
  58. primitive_list.push_back(new_triangle);
  59.  
  60. break;
  61. }
  62. }
  63. }
  64.  
Add Comment
Please, Sign In to add comment