Skip to content

Instantly share code, notes, and snippets.

@jmacey
Created December 9, 2016 11:04
Show Gist options
  • Save jmacey/ac426675ed40328812b3319095eaabb1 to your computer and use it in GitHub Desktop.
Save jmacey/ac426675ed40328812b3319095eaabb1 to your computer and use it in GitHub Desktop.
Outside of function put
constexpr auto normalShader="normalShader";
in initializeGL put
shader->createShaderProgram(normalShader);
shader->attachShader("normalVertex",ngl::ShaderType::VERTEX);
shader->attachShader("normalFragment",ngl::ShaderType::FRAGMENT);
shader->attachShader("normalGeo",ngl::ShaderType::GEOMETRY);
shader->loadShaderSource("normalVertex","shaders/normalVertex.glsl");
shader->loadShaderSource("normalFragment","shaders/normalFragment.glsl");
shader->loadShaderSource("normalGeo","shaders/normalGeo.glsl");
shader->attachShaderToProgram(normalShader,"normalVertex");
shader->attachShaderToProgram(normalShader,"normalFragment");
shader->attachShaderToProgram(normalShader,"normalGeo");
shader->compileShader("normalVertex");
shader->compileShader("normalFragment");
shader->compileShader("normalGeo");
shader->linkProgramObject(normalShader);
shader->use(normalShader);
shader->setUniform("normalSize",0.5f );
shader->setUniform("vertNormalColour",0.0f,0.0f,1.0f,0.0f);
shader->setUniform("faceNormalColour",0.0f,0.0f,1.0f,0.0f);
shader->setUniform("drawFaceNormals",1);
shader->setUniform("drawVertexNormals",1);
In Draw put use
m_vao->bind();
shader->use(normalShader);
shader->setUniform("MVP", mouseGlobalTX * m_view*m_projection);
m_vao->draw();
shader->use(gridShader);
shader->setUniform("MVP", mouseGlobalTX * m_view*m_projection);
shader->setUniform("MV", mouseGlobalTX * m_view);
ngl::Mat3 normalMatrix= mouseGlobalTX * m_view;
normalMatrix.inverse();
shader->setUniform("normalMatrix",normalMatrix);
m_vao->draw();
m_vao->unbind();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment