diff options
author | crupest <crupest@outlook.com> | 2021-12-05 20:31:36 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-12-05 20:31:36 +0800 |
commit | 7fffbcb5ed573ecbc5ecf3f7b5c18d4f37d94fc6 (patch) | |
tree | 94b80cea33be935e48ea58ee33a2b94ceaa31a3f /works/life | |
parent | 039b80b24ce71c1998b15f7cc12f7da3a9c3edd2 (diff) | |
download | crupest-7fffbcb5ed573ecbc5ecf3f7b5c18d4f37d94fc6.tar.gz crupest-7fffbcb5ed573ecbc5ecf3f7b5c18d4f37d94fc6.tar.bz2 crupest-7fffbcb5ed573ecbc5ecf3f7b5c18d4f37d94fc6.zip |
import(life): ...
Diffstat (limited to 'works/life')
-rw-r--r-- | works/life/computer-graphics-experiment/4.cpp | 192 | ||||
-rw-r--r-- | works/life/computer-graphics-experiment/CMakeLists.txt | 14 |
2 files changed, 0 insertions, 206 deletions
diff --git a/works/life/computer-graphics-experiment/4.cpp b/works/life/computer-graphics-experiment/4.cpp deleted file mode 100644 index 9852844..0000000 --- a/works/life/computer-graphics-experiment/4.cpp +++ /dev/null @@ -1,192 +0,0 @@ -// Code from https://learnopengl.com/Getting-started/Hello-Triangle - -#include <glad/glad.h> - -#include <GLFW/glfw3.h> - -#include <iostream> - -void framebuffer_size_callback(GLFWwindow *window, int width, int height); -void processInput(GLFWwindow *window); - -// settings -const unsigned int SCR_WIDTH = 800; -const unsigned int SCR_HEIGHT = 600; - -const char *vertexShaderSource = - "#version 330 core\n" - "layout (location = 0) in vec3 aPos;\n" - "void main()\n" - "{\n" - " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" - "}\0"; -const char *fragmentShaderSource = - "#version 330 core\n" - "out vec4 FragColor;\n" - "void main()\n" - "{\n" - " FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n" - "}\n\0"; - -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); - -#ifdef __APPLE__ - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); -#endif - - // 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 program - // ------------------------------------ - // vertex shader - unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(vertexShader, 1, &vertexShaderSource, NULL); - glCompileShader(vertexShader); - // check for shader compile errors - int success; - char infoLog[512]; - glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(vertexShader, 512, NULL, infoLog); - std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" - << infoLog << std::endl; - } - // fragment shader - unsigned int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL); - glCompileShader(fragmentShader); - // check for shader compile errors - glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog); - std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" - << infoLog << std::endl; - } - // link shaders - unsigned int shaderProgram = glCreateProgram(); - glAttachShader(shaderProgram, vertexShader); - glAttachShader(shaderProgram, fragmentShader); - glLinkProgram(shaderProgram); - // check for linking errors - glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog); - std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" - << infoLog << std::endl; - } - glDeleteShader(vertexShader); - glDeleteShader(fragmentShader); - - // set up vertex data (and buffer(s)) and configure vertex attributes - // ------------------------------------------------------------------ - float vertices[] = { - -0.5f, -0.5f, 0.0f, // left - 0.5f, -0.5f, 0.0f, // right - 0.0f, 0.5f, 0.0f // top - }; - - unsigned int VBO, VAO; - glGenVertexArrays(1, &VAO); - glGenBuffers(1, &VBO); - // bind the Vertex Array Object first, then bind and set vertex buffer(s), and - // then configure vertex attributes(s). - glBindVertexArray(VAO); - - glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); - glEnableVertexAttribArray(0); - - // note that this is allowed, the call to glVertexAttribPointer registered VBO - // as the vertex attribute's bound vertex buffer object so afterwards we can - // safely unbind - glBindBuffer(GL_ARRAY_BUFFER, 0); - - // You can unbind the VAO afterwards so other VAO calls won't accidentally - // modify this VAO, but this rarely happens. Modifying other VAOs requires a - // call to glBindVertexArray anyways so we generally don't unbind VAOs (nor - // VBOs) when it's not directly necessary. - glBindVertexArray(0); - - // uncomment this call to draw in wireframe polygons. - // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - // render loop - // ----------- - while (!glfwWindowShouldClose(window)) { - // input - // ----- - processInput(window); - - // render - // ------ - glClearColor(0.2f, 0.3f, 0.3f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - // draw our first triangle - glUseProgram(shaderProgram); - glBindVertexArray( - VAO); // seeing as we only have a single VAO there's no need to bind it - // every time, but we'll do so to keep things a bit more organized - glDrawArrays(GL_TRIANGLES, 0, 3); - // glBindVertexArray(0); // no need to unbind it every time - - // 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); - glDeleteProgram(shaderProgram); - - // glfw: terminate, clearing all previously allocated GLFW resources. - // ------------------------------------------------------------------ - glfwTerminate(); - return 0; -} - -// 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); -} - -// 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); -}
\ No newline at end of file diff --git a/works/life/computer-graphics-experiment/CMakeLists.txt b/works/life/computer-graphics-experiment/CMakeLists.txt deleted file mode 100644 index b9557d4..0000000 --- a/works/life/computer-graphics-experiment/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 3.14) - -set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake - CACHE STRING "Vcpkg toolchain file") - -set(CMAKE_CXX_STANDARD 20) - -project(computer-graphics-experiment) - -find_package(glad CONFIG REQUIRED) -find_package(glfw3 CONFIG REQUIRED) - -add_executable(4 4.cpp) -target_link_libraries(4 PRIVATE glad::glad glfw) |