#General rules for working with shaders in OpenFrameworks
- in main.cpp, set the GL version to 3,2:
ofGLWindowSettings settings;
settings.setGLVersion(3,2);
ofCreateWindow(settings);
- in ofApp.h, declare your shader member variable:
ofShader shader;
- create your .vert and .frag shader files inside bin/data/:
//sample myshader.vert
#version 150
uniform mat4 mvPMat;
in vec4 pos;
void main(){
gl_Position = mvPMat * pos;
}
//sample myshader.frag
#version 150
out vec4 output_Color;
void main(){
float windowWidth = 1024.0;
float windowHeight = 768.0;
float r = gl_FragCoord.x /windowWidth;
float g = gl_FragCoord.y / windowHeight;
float b = 1.0;
float a = 1.0;
output_Color = vec4(r,g,b,a);
}
- in ofApp::setup(), load your shaders:
//OF knows to load both your vert and frag shaders together
if(ofIsGLProgrammableRenderer()){
shader.load("myshader");
}
- in ofApp::draw(), draw your shapes inside the shader:
ofSetColor(255);
shader.begin();
//try other drawing methods here instead of rectangle
ofDrawRectangle(0,0,ofGetWidth(), ofGetHeight());
shader.end();