Advertisement
Guest User

Untitled

a guest
Jan 19th, 2025
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <SDL2/SDL.h>
  3. #include <vector>
  4. #include <sstream>
  5.  
  6. std::vector<int> returnedPoints;
  7.  
  8. int cube[25] = {0, 0, 0, 100, 0, 0, 0, 0, 100, 100, 0, 100, 0, 100, 0, 100, 100, 0, 0, 100, 100, 100, 100, 100, -2147483648};
  9.  
  10. bool toggle = false;
  11.  
  12. std::vector<SDL_Texture*> textures;
  13. std::vector<SDL_Rect*> textureRects;
  14.  
  15. int textureIndex = 0;
  16.  
  17. int wireframePointSize = 10;
  18.  
  19. bool convert3DPointsTo2D(int* points)
  20. {
  21.     returnedPoints.clear();
  22.  
  23.     int point[3];
  24.  
  25.     int currentPoint = 0;
  26.  
  27.     int pointsLength = 0;
  28.  
  29.     bool testing = true;
  30.  
  31.     for(int i = 0; points[i] != -2147483648; i++)
  32.     {
  33.         pointsLength++;
  34.     }
  35.  
  36.     for(int i = 0; i < pointsLength; i++)
  37.     {
  38.         point[currentPoint] = points[i];
  39.  
  40.         currentPoint++;
  41.  
  42.         if(currentPoint == 3)
  43.         {
  44.             currentPoint = 0;
  45.  
  46.             returnedPoints.push_back(point[0]);
  47.             returnedPoints.push_back(point[1]);
  48.         }
  49.     }
  50.  
  51.     returnedPoints.push_back(-2147483648);
  52.  
  53.     return true;
  54. }
  55.  
  56. bool render3DPoints(std::vector<int>& points, SDL_Renderer* renderer)
  57. {
  58.     int pointsLength = 0;
  59.  
  60.     int point[2];
  61.  
  62.     int currentPoint = 0;
  63.  
  64.     for(int i = 0; i < points.size() && points[i] != -2147483648; i++)
  65.     {
  66.         pointsLength++;
  67.     }
  68.  
  69.     for(int i = 0; i < pointsLength; i++)
  70.     {
  71.         point[currentPoint] = points[i];
  72.  
  73.         currentPoint++;
  74.  
  75.         if(currentPoint == 2)
  76.         {
  77.             currentPoint = 0;
  78.  
  79.             if(SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255) != 0)
  80.             {
  81.                 std::cout << "Error code 5: " << SDL_GetError() << std::endl;
  82.  
  83.                 return false;
  84.             }
  85.  
  86.             SDL_Rect rect;
  87.            
  88.             rect.x = point[0]-wireframePointSize/2;
  89.             rect.y = point[1]-wireframePointSize/2;
  90.             rect.w = wireframePointSize;
  91.             rect.h = wireframePointSize;
  92.  
  93.             SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
  94.             SDL_RenderDrawRect(renderer, &rect);
  95.  
  96.             if(SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255) != 0)
  97.             {
  98.                 std::cout << "Error code 5: " << SDL_GetError() << std::endl;
  99.  
  100.                 return false;
  101.             }
  102.  
  103.             SDL_RenderFillRect(renderer, &rect);
  104.         }
  105.     }
  106.  
  107.     return true;
  108. }
  109.  
  110. bool render(SDL_Renderer* renderer)
  111. {
  112.     SDL_RenderClear(renderer);
  113.  
  114.     for(int i = 0; i < textures.size(); i++)
  115.     {
  116.         SDL_RenderCopy(renderer, textures[i], textureRects[i], NULL);
  117.     }
  118.  
  119.     render3DPoints(returnedPoints, renderer);
  120.  
  121.     SDL_RenderPresent(renderer);
  122.  
  123.     return true;
  124. }
  125.  
  126. bool doThings(SDL_Renderer* renderer)
  127. {
  128.     if(toggle == false)
  129.     {
  130.         convert3DPointsTo2D(cube);
  131.  
  132.         std::stringstream ss;
  133.  
  134.         for (int i = 0; i < returnedPoints.size(); i++)
  135.         {
  136.             ss << returnedPoints[i];
  137.        
  138.             if (i != returnedPoints.size() - 1)
  139.             {
  140.                 ss << ",";
  141.             }
  142.         }
  143.  
  144.         std::string result = ss.str();
  145.  
  146.         std::cout << result << std::endl;
  147.  
  148.         render3DPoints(returnedPoints, renderer);
  149.  
  150.         toggle = true;
  151.     }
  152.    
  153.     return true;
  154. }
  155.  
  156. bool getEvents(SDL_Window* window, SDL_Renderer* renderer)
  157. {
  158.     SDL_Event event;
  159.  
  160.     while(SDL_PollEvent(&event))
  161.     {
  162.         switch(event.type)
  163.         {
  164.             case SDL_QUIT:
  165.                 SDL_DestroyWindow(window);
  166.                 SDL_DestroyRenderer(renderer);
  167.                 SDL_Quit();
  168.         }
  169.     }
  170.  
  171.     return true;
  172. }
  173.  
  174. int main()
  175. {
  176.     bool running = true;
  177.  
  178.     if(SDL_Init(SDL_INIT_EVERYTHING) != 0)
  179.     {
  180.         return -6;
  181.     }
  182.  
  183.     SDL_Window* window = SDL_CreateWindow("Game", 0, 0, 2560, 1440, SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN);
  184.     SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  185.  
  186.     if(window == NULL)
  187.     {
  188.         return -1;
  189.     }
  190.  
  191.     if(renderer == NULL)
  192.     {
  193.         return -2;
  194.     }
  195.  
  196.     while(running)
  197.     {
  198.         if(getEvents(window, renderer) == false)
  199.         {
  200.             return -3;
  201.         }
  202.         if(doThings(renderer) == false)
  203.         {
  204.             return -4;
  205.         }
  206.         if(render(renderer) == false)
  207.         {
  208.             return -5;
  209.         }
  210.     }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement