diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-04-02 09:13:33 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-04-02 09:13:33 +0400 |
| commit | 806a1e093eeac8b426b20717c14260c9cb896798 (patch) | |
| tree | 7b6e1a01958269ce78b9716461a9fa4c05d3dc5e /main.cpp | |
| parent | 15ccb946f43283bfc91d80ddf012d9ae2a0333ed (diff) | |
Removed CUDA files and changed build system to premakeremake
Diffstat (limited to 'main.cpp')
| -rw-r--r-- | main.cpp | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/main.cpp b/main.cpp deleted file mode 100644 index f281df8..0000000 --- a/main.cpp +++ /dev/null @@ -1,263 +0,0 @@ -#include <glad/glad.h> -#include <GLFW/glfw3.h> - -#define STB_IMAGE_IMPLEMENTATION -#include <stb_image.h> - -#include <shader.h> -#include "Canvas/Canvas.h" -#include "point.h" -#include "Canvas/cuda/CalculateCanvasGPU.h" - -#include <iostream> -#include <cmath> -#include <vector> - -void framebuffer_size_callback(GLFWwindow* window, int width, int height); -void processInput(GLFWwindow *window); - -void loadTexture(std::string path, unsigned int* texture, int* width, int* height); -void generateCanvasTexture(unsigned int *texture, unsigned char color); -void window_size_callback(GLFWwindow* window, int width, int height); - -// settings -unsigned int SCR_WIDTH = 768; -unsigned int SCR_HEIGHT = 768; -const std::string PROJECT_PATH = "/home/saintruler/Documents/opengl_gravity/"; -unsigned char* canvas = (unsigned char*) malloc(SCR_HEIGHT * SCR_WIDTH * 3); - -std::vector<point> points; -const double c = 1e5; -cuda_point* gpuPoints = (cuda_point*) malloc(3 * sizeof(cuda_point)); - -int main() -{ - // glfw: initialize and configure - // ------------------------------ - glfwInit(); - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - - // glfw window creation - // -------------------- - GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); - if (window == NULL) - { - std::cout << "Failed to create GLFW window" << std::endl; - glfwTerminate(); - return -1; - } - glfwMakeContextCurrent(window); - glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); - - // glad: load all OpenGL function pointers - // --------------------------------------- - if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) - { - std::cout << "Failed to initialize GLAD" << std::endl; - return -1; - } - - // build and compile our shader zprogram - // ------------------------------------ - Shader ourShader((PROJECT_PATH + "4.1.texture.vs").c_str(), (PROJECT_PATH + "4.1.texture.fs").c_str()); - - // set up vertex data (and buffer(s)) and configure vertex attributes - // ------------------------------------------------------------------ - - float vertices[] = { - // positions // colors // texture coords - 1.f, 1.f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right - 1.f, -1.f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right - -1.f, -1.f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left - -1.f, 1.f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left - }; - unsigned int indices[] = { - 0, 1, 3, // first triangle - 1, 2, 3 // second triangle - }; - unsigned int VBO, VAO, EBO; - glGenVertexArrays(1, &VAO); - glGenBuffers(1, &VBO); - glGenBuffers(1, &EBO); - - glBindVertexArray(VAO); - - glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); - - // position attribute - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0); - glEnableVertexAttribArray(0); - // color attribute - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float))); - glEnableVertexAttribArray(1); - // texture coord attribute - glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); - glEnableVertexAttribArray(2); - - - // load and create a texture - // ------------------------- - unsigned int texture; - glGenTextures(1, &texture); - unsigned char i = 0; - - points.emplace_back(point(100, 100)); - points.emplace_back(point(500, 500)); - points.emplace_back(point(200, 375)); - - gpuPoints[0] = cuda_point{.x=100, .y=100}; - gpuPoints[1] = cuda_point{.x=500, .y=500}; - gpuPoints[2] = cuda_point{.x=200, .y=200}; - - - // render loop - // ----------- - while (!glfwWindowShouldClose(window)) - { - // input - // ----- - processInput(window); - - // render - // ------ - glClearColor(0.2f, 0.3f, 0.3f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - generateCanvasTexture(&texture, i++); - // bind Texture - glBindTexture(GL_TEXTURE_2D, texture); - - // render container - ourShader.use(); - glBindVertexArray(VAO); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); - - // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) - // ------------------------------------------------------------------------------- - glfwSwapBuffers(window); - glfwPollEvents(); - } - - // optional: de-allocate all resources once they've outlived their purpose: - // ------------------------------------------------------------------------ - glDeleteVertexArrays(1, &VAO); - glDeleteBuffers(1, &VBO); - glDeleteBuffers(1, &EBO); - - // glfw: terminate, clearing all previously allocated GLFW resources. - // ------------------------------------------------------------------ - glfwTerminate(); - return 0; -} - - -void loadTexture(std::string path, unsigned int* texture, int* width, int* height) -{ - glGenTextures(1, texture); - glBindTexture(GL_TEXTURE_2D, *texture); // all upcoming GL_TEXTURE_2D operations now have effect on this texture object - // set the texture wrapping parameters - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - // set texture filtering parameters - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - // load image, create texture and generate mipmaps - int nrChannels; - unsigned char* data = stbi_load(path.c_str(), width, height, &nrChannels, 0); - - if (data) - { - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, *width, *height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); - glGenerateMipmap(GL_TEXTURE_2D); - } - else - { - std::cout << "Failed to load texture" << std::endl; - } - stbi_image_free(data); -} - - -void generateCanvasTexture(unsigned int *texture, unsigned char color) -{ - glBindTexture(GL_TEXTURE_2D, *texture); // all upcoming GL_TEXTURE_2D operations now have effect on this texture object - // set the texture wrapping parameters - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - // set texture filtering parameters - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - // load image, create texture and generate mipmaps - - -// for (int x = 0; x < SCR_WIDTH; x++) -// { -// for (int y = 0; y < SCR_HEIGHT; y++) -// { -// -// point canvas_pt(x, y); -// double f = 0; -// for (point pt : points) -// { -// point path = pt - canvas_pt; -// -// f += (c * 20 * 1) / path.length_sqared(); -// } -// -// int l = (int) f; -// if (l > 255) l = 255; -// -// -// canvas[y * SCR_WIDTH * 3 + x * 3 + 0] = l; -// canvas[y * SCR_WIDTH * 3 + x * 3 + 1] = 0; -// canvas[y * SCR_WIDTH * 3 + x * 3 + 2] = 0; -// } -// } - - generate_canvas(SCR_WIDTH, SCR_HEIGHT, canvas, gpuPoints, 3); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, SCR_WIDTH, SCR_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, (unsigned char*) canvas); - glGenerateMipmap(GL_TEXTURE_2D); -} - - -// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly -// --------------------------------------------------------------------------------------------------------- -void processInput(GLFWwindow *window) -{ - if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) - glfwSetWindowShouldClose(window, true); - - if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS) - points[0].x -= 20; - if (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS) - points[0].x += 20; - - if (glfwGetKey(window, GLFW_KEY_DOWN) == GLFW_PRESS) - points[0].y -= 20; - if (glfwGetKey(window, GLFW_KEY_UP) == GLFW_PRESS) - points[0].y += 20; - - double xpos, ypos; - //getting cursor position - glfwGetCursorPos(window, &xpos, &ypos); -// points[0].x = xpos; -// points[0].y = SCR_HEIGHT - ypos; - gpuPoints[0].x = xpos; - gpuPoints[0].y = SCR_HEIGHT - ypos; -} - -// glfw: whenever the window size changed (by OS or user resize) this callback function executes -// --------------------------------------------------------------------------------------------- -void framebuffer_size_callback(GLFWwindow* window, int width, int height) -{ - // make sure the viewport matches the new window dimensions; note that width and - // height will be significantly larger than specified on retina displays. - glViewport(0, 0, width, height); -} |