Hey folks,
first off let me thank everyone for this great project and its community. It’s been amazing how easy and fun it was to get started with openFrameworks with nearly no background in OpenGL, heck even C++. Thanks for all the tutorials,forum replys and the documentation !
So I recently discovered shaders and I’m trying to figure them out .Unfortunately i ran into some very odd stuff.
I want to display 3 squares (build by the geometry shader around the vectors in the mesh) and color them. What i’m left with is just a blank screen.
I’m using a vector, geometry and fragment shader which i tried to keep simple to get used too. Simple seems
to be to hard though
So here’s the app’s code:
ofApp.cpp
void ofApp::setup(){
ofSetFrameRate(60);
renderShader.load("shaders/render.vert","shaders/render.frag","shaders/render.geom");
renderShader.setGeometryInputType(GL_POINTS);
renderShader.setGeometryOutputType(GL_TRIANGLES);
mesh.setMode(OF_PRIMITIVE_POINTS);
mesh.addVertex(ofVec3f(150,50,0));
mesh.addColor(ofColor(255,0,0));
mesh.addVertex(ofVec3f(100,150,0));
mesh.addColor(ofColor(255,0,255));
mesh.addVertex(ofVec3f(50,120,0));
mesh.addColor(ofColor(255,255,0));
}
//--------------------------------------------------------------
void ofApp::draw(){
renderShader.begin();
renderShader.setUniform1f("size",4);
mesh.draw();
renderShader.end();
}
Vertex Shader
#version 150
#extension GL_EXT_gpu_shader4 : enable
#extension GL_ARB_texture_rectangle : enable
uniform mat4 modelViewProjectionMatrix;
in vec4 position;
void main(){
gl_Position = position;
}
Geometry Shader
#version 120
#extension GL_EXT_geometry_shader4 : enable
#extension GL_EXT_gpu_shader4 : enable
uniform float size;
void main(void){
for(int i = 0; i < gl_VerticesIn; i++){
gl_Position = gl_ModelViewProjectionMatrix * ( gl_PositionIn[i] + vec4(-size,-size,0.0,0.0));
EmitVertex();
gl_Position = gl_ModelViewProjectionMatrix * (gl_PositionIn[i] + vec4(size,-size,0.0,0.0));
EmitVertex();
gl_Position = gl_ModelViewProjectionMatrix * (gl_PositionIn[i] + vec4(size,size,0.0,0.0));
EmitVertex();
EndPrimitive();
gl_Position = gl_ModelViewProjectionMatrix * (gl_PositionIn[i] + vec4(-size,-size,0.0,0.0));
EmitVertex();
gl_Position = gl_ModelViewProjectionMatrix * (gl_PositionIn[i] + vec4(-size,size,0.0,0.0));
EmitVertex();
gl_Position = gl_ModelViewProjectionMatrix * (gl_PositionIn[i] + vec4(size,size,0.0,0.0));
EmitVertex();
EndPrimitive();
}
}
and last but not least:
Fragment Shader
#version 120
#extension GL_ARB_texture_rectangle : enable
void main()
{
gl_FragColor = vec4(255, 255, 0, 1);
}
I appreciate every hint thanks in advance !