summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Ruge <ruge.moritz@gmail.com>2026-08-06 17:51:31 +0200
committerMoritz Ruge <ruge.moritz@gmail.com>2026-08-06 17:52:33 +0200
commit6d1c43c6b726d9a834fedc2d187e5345dab9a3fc (patch)
treefb33c5fbaa61d477d56495800bcf20798b91d6ca
parente9f7e9a4241d905153951cc15b302a8db39bcac4 (diff)
triangles exercise 3 - 2 shaderHEADmain
-rw-r--r--main.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/main.c b/main.c
index c4ef368..c88c88a 100644
--- a/main.c
+++ b/main.c
@@ -18,8 +18,8 @@ int main(void) {
unsigned int VBO[2], VAO[2], EBO;
// fragment shader
unsigned int vertex_shader;
- unsigned int fragment_shader;
- unsigned int shader_program;
+ unsigned int fragment_shader, fragment_shader2;
+ unsigned int shader_program, shader_program_2;
char info_Log[512];
// vertex shader source
@@ -39,6 +39,13 @@ int main(void) {
"void main() {\n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n\0";
+ const char* fragment_shader_source_2 =
+ "#version 460 core\n"
+ "out vec4 FragColor;\n"
+ "\n"
+ "void main() {\n"
+ "FragColor = vec4(1.0f, 1.0f, 0.0f, 1.0f);\n"
+ "}\n\0";
// Triangle shenanigans and now two of them!
// -----------------------------------------
@@ -112,11 +119,15 @@ int main(void) {
// fragment_shader
fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
+ fragment_shader2 = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);
+ glShaderSource(fragment_shader2, 1, &fragment_shader_source_2, NULL);
glCompileShader(fragment_shader);
+ glCompileShader(fragment_shader2);
// check for compilation error
glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &shader_success);
+ glGetShaderiv(fragment_shader2, GL_COMPILE_STATUS, &shader_success);
if (!shader_success) {
glGetShaderInfoLog(fragment_shader, 512, NULL, info_Log);
printf("ERROR SHADER FRAGMENT COMPILATION FAILED: %s\n", info_Log);
@@ -125,11 +136,16 @@ int main(void) {
// create shader program
// ---------------------
shader_program = glCreateProgram();
+ shader_program_2 = glCreateProgram();
// attach to shader program id
glAttachShader(shader_program, vertex_shader);
glAttachShader(shader_program, fragment_shader);
glLinkProgram(shader_program);
+ glAttachShader(shader_program_2, vertex_shader);
+ glAttachShader(shader_program_2, fragment_shader2);
+ glLinkProgram(shader_program_2);
+
// check for linking erros
glGetProgramiv(shader_program, GL_LINK_STATUS, &shader_success);
if (!shader_success) {
@@ -140,6 +156,7 @@ int main(void) {
// delete now unneeded shaders
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
+ glDeleteShader(fragment_shader2);
// set up vertex data (and buffers) and configure vertex attributes
// ----------------------------------------------------------------
@@ -201,6 +218,7 @@ int main(void) {
glBindVertexArray(VAO[0]);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glDrawArrays(GL_TRIANGLES, 4, 6);
+ glUseProgram(shader_program_2);
glBindVertexArray(VAO[1]);
glDrawArrays(GL_TRIANGLES, 0, 3);
@@ -215,6 +233,7 @@ int main(void) {
glDeleteBuffers(2, VBO);
glDeleteBuffers(1, &EBO);
glDeleteProgram(shader_program);
+ glDeleteProgram(shader_program_2);
// Terminate program
// -----------------