#include #include "glad/glad.h" #include "GLFW/glfw3.h" void frameBufferSizeChange(GLFWwindow *window, int width, int height) { glViewport(0, 0, width, height); } void processInput(GLFWwindow *window) { if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) { glfwSetWindowShouldClose(window, true); } } void CheckShader(unsigned int shaderIndex, bool isPorgram = false) { int successful; char logInfo[512]; if (isPorgram) { glad_glGetProgramiv(shaderIndex, GL_LINK_STATUS, &successful); } else { glad_glGetShaderiv(shaderIndex, GL_COMPILE_STATUS, &successful); } if (!successful){ if(isPorgram){ glad_glGetProgramInfoLog(shaderIndex, 512, nullptr, logInfo); }else{ glad_glGetShaderInfoLog(shaderIndex, 512, nullptr, logInfo); } std::cout<(error); } float vertices[] = { -0.5, 0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, -0.5f, 0.0f, }; unsigned int indices[] = { 0, 1, 3, 1, 2, 3, }; unsigned int VAO, VBO, EBO; glGenVertexArrays(1, &VAO); glGenBuffers(1, &VBO); glGenBuffers(1, &EBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *) 0); glEnableVertexAttribArray(0); glBindVertexArray(0); unsigned int vertexShader, fragmentShader, shaderProgram; vertexShader = glCreateShader(GL_VERTEX_SHADER); fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); shaderProgram = glCreateProgram(); glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr); CheckShader(vertexShader); glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr); CheckShader(fragmentShader); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glLinkProgram(shaderProgram); CheckShader(shaderProgram, true); glDeleteShader(vertexShader); glDeleteShader(fragmentShader); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); while (!glfwWindowShouldClose(window)) { processInput(window); glClearColor(.2f, .3f, .3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(shaderProgram); glBindVertexArray(VAO); // glDrawArrays(GL_TRIANGLES, 0, 3); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glfwSwapBuffers(window); glfwPollEvents(); } glDeleteVertexArrays(1, &VAO); glDeleteBuffers(1, &VBO); glDeleteProgram(shaderProgram); glfwTerminate(); return 0; }