Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <SDL2/SDL.h>
- #include <vector>
- #include <sstream>
- std::vector<int> returnedPoints;
- 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};
- bool toggle = false;
- std::vector<SDL_Texture*> textures;
- std::vector<SDL_Rect*> textureRects;
- int textureIndex = 0;
- int wireframePointSize = 10;
- bool convert3DPointsTo2D(int* points)
- {
- returnedPoints.clear();
- int point[3];
- int currentPoint = 0;
- int pointsLength = 0;
- bool testing = true;
- for(int i = 0; points[i] != -2147483648; i++)
- {
- pointsLength++;
- }
- for(int i = 0; i < pointsLength; i++)
- {
- point[currentPoint] = points[i];
- currentPoint++;
- if(currentPoint == 3)
- {
- currentPoint = 0;
- returnedPoints.push_back(point[0]);
- returnedPoints.push_back(point[1]);
- }
- }
- returnedPoints.push_back(-2147483648);
- return true;
- }
- bool render3DPoints(std::vector<int>& points, SDL_Renderer* renderer)
- {
- int pointsLength = 0;
- int point[2];
- int currentPoint = 0;
- for(int i = 0; i < points.size() && points[i] != -2147483648; i++)
- {
- pointsLength++;
- }
- for(int i = 0; i < pointsLength; i++)
- {
- point[currentPoint] = points[i];
- currentPoint++;
- if(currentPoint == 2)
- {
- currentPoint = 0;
- if(SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255) != 0)
- {
- std::cout << "Error code 5: " << SDL_GetError() << std::endl;
- return false;
- }
- SDL_Rect rect;
- rect.x = point[0]-wireframePointSize/2;
- rect.y = point[1]-wireframePointSize/2;
- rect.w = wireframePointSize;
- rect.h = wireframePointSize;
- SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
- SDL_RenderDrawRect(renderer, &rect);
- if(SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255) != 0)
- {
- std::cout << "Error code 5: " << SDL_GetError() << std::endl;
- return false;
- }
- SDL_RenderFillRect(renderer, &rect);
- }
- }
- return true;
- }
- bool render(SDL_Renderer* renderer)
- {
- SDL_RenderClear(renderer);
- for(int i = 0; i < textures.size(); i++)
- {
- SDL_RenderCopy(renderer, textures[i], textureRects[i], NULL);
- }
- render3DPoints(returnedPoints, renderer);
- SDL_RenderPresent(renderer);
- return true;
- }
- bool doThings(SDL_Renderer* renderer)
- {
- if(toggle == false)
- {
- convert3DPointsTo2D(cube);
- std::stringstream ss;
- for (int i = 0; i < returnedPoints.size(); i++)
- {
- ss << returnedPoints[i];
- if (i != returnedPoints.size() - 1)
- {
- ss << ",";
- }
- }
- std::string result = ss.str();
- std::cout << result << std::endl;
- render3DPoints(returnedPoints, renderer);
- toggle = true;
- }
- return true;
- }
- bool getEvents(SDL_Window* window, SDL_Renderer* renderer)
- {
- SDL_Event event;
- while(SDL_PollEvent(&event))
- {
- switch(event.type)
- {
- case SDL_QUIT:
- SDL_DestroyWindow(window);
- SDL_DestroyRenderer(renderer);
- SDL_Quit();
- }
- }
- return true;
- }
- int main()
- {
- bool running = true;
- if(SDL_Init(SDL_INIT_EVERYTHING) != 0)
- {
- return -6;
- }
- SDL_Window* window = SDL_CreateWindow("Game", 0, 0, 2560, 1440, SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN);
- SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
- if(window == NULL)
- {
- return -1;
- }
- if(renderer == NULL)
- {
- return -2;
- }
- while(running)
- {
- if(getEvents(window, renderer) == false)
- {
- return -3;
- }
- if(doThings(renderer) == false)
- {
- return -4;
- }
- if(render(renderer) == false)
- {
- return -5;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement