I tried to create a simple box blur shader applied to a photo. When running the code, I keep getting this error:
[ error ] ofShader: setupShaderFromSource(): GL_FRAGMENT_SHADER shader failed to compile
[ error ] ofShader: GL_FRAGMENT_SHADER shader reports:
0:5(18): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'
[ error ] ofShader: GL_FRAGMENT_SHADER, offending line 18:
16 color += texture(tex0, texCoordVarying + vec2(-1.0, -2.0));
17 color += texture(tex0, texCoordVarying + vec2(0.0, -2.0));
18 color += texture(tex0, texCoordVarying + vec2(1.0, -2.0));
19 color += texture(tex0, texCoordVarying + vec2(2.0, -2.0));
20 color += texture(tex0, texCoordVarying + vec2(-2.0, -1.0));
[ error ] ofShader: checkProgramLinkStatus(): program failed to link
[ error ] ofShader: ofShader: program reports:
error: linking with uncompiled/unspecialized shader
This keeps happening, although I tried to change the version of the shader (from version 150 to version 420), and use the latest OpenGL version (by using setGLVersion(4,2)). Anyone know what happened?
Here is the code I wrote:
File main.cpp
#include "ofMain.h"
#include "ofApp.h"
//========================================================================
int main( ){
//Use ofGLFWWindowSettings for more options like multi-monitor fullscreen
ofGLWindowSettings settings;
settings.setSize(1024, 768);
settings.setGLVersion(4, 2);
settings.windowMode = OF_WINDOW; //can also be OF_FULLSCREEN
auto window = ofCreateWindow(settings);
ofRunApp(window, make_shared<ofApp>());
ofRunMainLoop();
}
File ofApp.cpp
#include "ofApp.h"
//--------------------------------------------------------------
void ofApp::setup(){
image.load("photo/model_1366.png");
fboBlur.allocate(image.getWidth(), image.getHeight());
shader.load("shaderGL3/boxblur");
}
//--------------------------------------------------------------
void ofApp::update(){
//
}
//--------------------------------------------------------------
void ofApp::draw(){
fboBlur.begin();
shader.begin();
image.draw(0, 0);
shader.end();
fboBlur.end();
fboBlur.draw(0, 0);
}
File shaderGL3/boxblur.frag
// OF_GLSL_SHADER_HEADER
#version 420
uniform sample2D tex0;
in vec2 texCoordVarying;
out vec4 outputColor;
void main() {
vec4 color = vec4(0.0);
// dear fucking god, why?
color += texture(tex0, texCoordVarying + vec2(-2.0, -2.0));
color += texture(tex0, texCoordVarying + vec2(-1.0, -2.0));
color += texture(tex0, texCoordVarying + vec2(0.0, -2.0));
color += texture(tex0, texCoordVarying + vec2(1.0, -2.0));
color += texture(tex0, texCoordVarying + vec2(2.0, -2.0));
color += texture(tex0, texCoordVarying + vec2(-2.0, -1.0));
color += texture(tex0, texCoordVarying + vec2(-1.0, -1.0));
color += texture(tex0, texCoordVarying + vec2(0.0, -1.0));
color += texture(tex0, texCoordVarying + vec2(1.0, -1.0));
color += texture(tex0, texCoordVarying + vec2(2.0, -1.0));
color += texture(tex0, texCoordVarying + vec2(-2.0, 0.0));
color += texture(tex0, texCoordVarying + vec2(-1.0, 0.0));
color += texture(tex0, texCoordVarying + vec2(0.0, 0.0));
color += texture(tex0, texCoordVarying + vec2(1.0, 0.0));
color += texture(tex0, texCoordVarying + vec2(2.0, 0.0));
color += texture(tex0, texCoordVarying + vec2(-2.0, 1.0));
color += texture(tex0, texCoordVarying + vec2(-1.0, 1.0));
color += texture(tex0, texCoordVarying + vec2(0.0, 1.0));
color += texture(tex0, texCoordVarying + vec2(1.0, 1.0));
color += texture(tex0, texCoordVarying + vec2(2.0, 1.0));
color += texture(tex0, texCoordVarying + vec2(-2.0, 2.0));
color += texture(tex0, texCoordVarying + vec2(-1.0, 2.0));
color += texture(tex0, texCoordVarying + vec2(0.0, 2.0));
color += texture(tex0, texCoordVarying + vec2(1.0, 2.0));
color += texture(tex0, texCoordVarying + vec2(2.0, 2.0));
outputColor = color / 25.0;
}
3 posts - 2 participants