From 53f7dd1f6d57e2c5d43d575416863ad1146a7e1c Mon Sep 17 00:00:00 2001 From: David Allemang Date: Sun, 15 Sep 2019 18:30:18 -0400 Subject: [PATCH] query uniform location for compatibility --- cosets/src/main.cpp | 35 +++++++++++++++++++++++---------- cosets/src/shaders/main.fs.glsl | 2 +- cosets/src/shaders/main.vs.glsl | 2 +- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/cosets/src/main.cpp b/cosets/src/main.cpp index daa64a1..a9c6d5d 100644 --- a/cosets/src/main.cpp +++ b/cosets/src/main.cpp @@ -24,6 +24,8 @@ class CosetsWindow : public Window { GLuint faces_buf; std::vector face_data; + GLint u_proj, u_view, u_color; + public: void init() override { auto vs = build_shader_file( @@ -38,8 +40,12 @@ public: program = build_program("main", vs, fs); + u_proj = glGetUniformLocation(program, "proj"); + u_view = glGetUniformLocation(program, "view"); + u_color = glGetUniformLocation(program, "color"); + const int N = 3; - const Mults &mults = schlafli({5, 3}); + const Mults &mults = schlafli({4, 3}); vert_data = vertices(mults, {1, 1, 1}); edge_data = edges(mults); face_data = faces(mults); @@ -80,6 +86,12 @@ public: glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, faces_buf); glBindVertexArray(0); + + std::cout << "verts: " << vert_data.size() << std::endl; + std::cout << "vendor: " << glGetString(GL_VENDOR) << std::endl + << "renderer: " << glGetString(GL_RENDERER) << std::endl + << "version: " << glGetString(GL_VERSION) << std::endl + << "shading version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl; } void render() override { @@ -101,30 +113,33 @@ public: const glm::mat4 view = glm::rotate(id, angle, ax_1) * glm::rotate(id, angle, ax_2); glUseProgram(program); - glUniformMatrix4fv(1, 1, false, glm::value_ptr(proj)); - glUniformMatrix4fv(2, 1, false, glm::value_ptr(view)); + glUniformMatrix4fv(u_proj, 1, false, glm::value_ptr(proj)); + glUniformMatrix4fv(u_view, 1, false, glm::value_ptr(view)); + glEnable(GL_DEPTH_TEST); glEnable(GL_POINT_SMOOTH); glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPointSize(6.0f); - glLineWidth(3.0f); glEnable(GL_CULL_FACE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glPointSize(6.0f); + glLineWidth(3.0f); + glBindVertexArray(vert_vao); - glUniform4f(0, 1, 0, 0, 1); + glUniform4f(u_color, 1, 0, 0, 1); glDrawArrays(GL_POINTS, 0, vert_data.size()); glBindVertexArray(edge_vao); - glUniform4f(0, 1, 0, 0, 1); + glUniform4f(u_color, 1, 0, 0, 1); glDrawElements(GL_LINES, edge_data.size(), GL_UNSIGNED_INT, 0); glBindVertexArray(face_vao); glCullFace(GL_BACK); - glUniform4f(0, .3, .3, .3, 1); + glUniform4f(u_color, .3, .3, .3, 1); glDrawElements(GL_TRIANGLES, face_data.size(), GL_UNSIGNED_INT, 0); glCullFace(GL_FRONT); - glUniform4f(0, .8, .8, .8, 1); + glUniform4f(u_color, .8, .8, .8, 1); glDrawElements(GL_TRIANGLES, face_data.size(), GL_UNSIGNED_INT, 0); swapbuffers(); diff --git a/cosets/src/shaders/main.fs.glsl b/cosets/src/shaders/main.fs.glsl index 3bb6869..6fb0d0d 100644 --- a/cosets/src/shaders/main.fs.glsl +++ b/cosets/src/shaders/main.fs.glsl @@ -1,4 +1,4 @@ -#version 440 core +#version 400 core uniform vec4 color; diff --git a/cosets/src/shaders/main.vs.glsl b/cosets/src/shaders/main.vs.glsl index f48f250..da10d0a 100644 --- a/cosets/src/shaders/main.vs.glsl +++ b/cosets/src/shaders/main.vs.glsl @@ -1,4 +1,4 @@ -#version 440 core +#version 400 core uniform mat4 proj; uniform mat4 view;