diff options
author | iurii plugatarov <[email protected]> | 2024-08-07 19:28:51 +0200 |
---|---|---|
committer | iurii plugatarov <[email protected]> | 2024-08-07 19:28:51 +0200 |
commit | 6bea407754e42bd73ad25b3484567226e292eacc (patch) | |
tree | cd41343cc8742c3e802901abf8865ced1a7128a9 /src/main.c | |
download | ogl-6bea407754e42bd73ad25b3484567226e292eacc.tar.gz |
init
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..7b498c7 --- /dev/null +++ b/src/main.c @@ -0,0 +1,68 @@ +#include <GLFW/glfw3.h> +#include <stdio.h> +#include <stdlib.h> + +#define GL_SILENCE_DEPRECATION 1 + +int main() { + // Initialize GLFW + if (!glfwInit()) { + return -1; + } + + // Set the required options for GLFW + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac + + // Create a windowed mode window and its OpenGL context + GLFWwindow *window = glfwCreateWindow(800, 600, "Blue screen", NULL, NULL); + if (!window) { + glfwTerminate(); + return -1; + } + + glfwMakeContextCurrent(window); + + float vertices[6] = {-0.5f, -0.5f, 0.0f, 0.5f, 0.5f, -0.5f}; + + unsigned int VBO; + glGenBuffers(1, &VBO); + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + const char *vertex_shader_src = + "#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"; + + unsigned int vertex_shader; + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_src, NULL); + glCompileShader(vertex_shader); + + int success; + char info_log[512]; + glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success); + + if (!success) { + glGetShaderInfoLog(vertex_shader, 512, NULL, info_log); + printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED %s\n", info_log); + } + + while (!glfwWindowShouldClose(window)) { + glClearColor(0.1f, 0.1f, 0.25f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glfwSwapBuffers(window); + + glfwPollEvents(); + } + + glfwTerminate(); + return 0; +} |