From f0784f52252ca2698d157017b289ca18b16bf510 Mon Sep 17 00:00:00 2001 From: Warwick Date: Fri, 5 Feb 2021 15:58:57 +0000 Subject: [PATCH] Attached Shader to triangle --- src/main.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 849b7ef..4daad9d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,3 +1,19 @@ +// TODO: Stop this fuckery +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" + "}\0"; + //#include #include // Make sure Glew is loaded first @@ -61,12 +77,52 @@ int main(int argc, char **argv) { // set up vertex array atributes glVertexArrayAttribFormat(VAO, 0, 3, GL_FLOAT, GL_FALSE, 0); - // sut up vbo for vao + // set up vbo for vao glVertexArrayVertexBuffer(VAO, 0, VBO, 0, sizeof(float) * 3); // shove vertex array into buffer glBindVertexArray(VAO); + // create vertex shader + unsigned int vertexShader; + vertexShader = glCreateShader(GL_VERTEX_SHADER); + // compile vertex shader + glShaderSource(vertexShader, 1, &vertexShaderSource, NULL); + glCompileShader(vertexShader); + // TODO: test the shader was compiled + // https://learnopengl.com/Getting-started/Hello-Triangle + + // create fragment shader + unsigned int fragmentShader; + fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); + // compile fragment shader + glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL); + glCompileShader(fragmentShader); + // TODO: test the shader was compiled + // https://learnopengl.com/Getting-started/Hello-Triangle + + // Tell openGL how to interpret vertex data + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); + glEnableVertexAttribArray(0); + + // Create the shader program + unsigned int shaderProgram; + shaderProgram = glCreateProgram(); + + // Attach shaders to the shader program + glAttachShader(shaderProgram, vertexShader); + glAttachShader(shaderProgram, fragmentShader); + glLinkProgram(shaderProgram); + // TODO: test the shader was linked + // https://learnopengl.com/Getting-started/Hello-Triangle + + // Make every shader/rendering call from this point on use our shader + glUseProgram(shaderProgram); + + // Clean up shader creation stuff from memory + glDeleteShader(vertexShader); + glDeleteShader(fragmentShader); + // Game loop bool running = true; while (running) {