hi!
i’m trying to use ofShader with OfxGStreamer but with no success.
later i used shaders with ofGLFWWindowSettings and ofVideoPlayer and worked fine, but the performance was much low with fps alternation.
now, with GStreamer addon, the performance is great, but i get errors when using ofGLFWWindowSettings or ofGLWindowSettings such as:
[ error ] ofShader: setupShaderFromSource(): GL_VERTEX_SHADER shader failed to compile
ERROR: 0:12: ‘’ : #version required and missing.
ERROR: 0:12: ‘varying’ : syntax error: syntax error
[ error ] ofShader: setupShaderFromSource(): GL_FRAGMENT_SHADER shader failed to compile
taking a look at some examples and others code, i tried to use ofGLESWindowSettings and this is the one that i could see positive responses, such as:
[verbose] ofShader: checkAndCreateProgram(): creating GLSL program
[verbose] ofShader: setupShaderFromSource(): GL_VERTEX_SHADER shader compiled
[verbose] ofShader: setupShaderFromSource(): GL_FRAGMENT_SHADER shader compiled
[verbose] ofShader: linkProgram(): attaching GL_FRAGMENT_SHADER shader to program 1
[verbose] ofShader: linkProgram(): attaching GL_VERTEX_SHADER shader to program 1
on this case the video is flickering and there are no returning from shaders commands. and now i really dont know how to fix that
i will try to sum up the code below:
main.cpp
int main( ){
ofSetLogLevel(OF_LOG_VERBOSE);
int windowWidth = 1920;
int windowHeight = 1080;
#ifdef TARGET_OPENGLES
ofGLESWindowSettings settings;
settings.width = windowWidth;
settings.height = windowHeight;
settings.setGLESVersion(2);
ofCreateWindow(settings);
#else
ofSetupOpenGL(windowWidth, windowHeight, OF_WINDOW);
#endif
ofRunApp( new ofApp());
}
ofApp.h
// [...]
ofVideoPlayer player;
ofShader shader;
bool doShader;
ofxToggle doShaderT;
// [...]
ofApp.cpp
//--------------------------------------------------------------
#include "ofGstVideoPlayer.h"
void ofApp::setup(){
// [...]
player.setPlayer(ofPtr<ofGstVideoPlayer>(new ofGstVideoPlayer));
player.load("videos/test.mov");
player.play();
// [...]
shader.load("shaders/brcosa_GLSL");
doShader = true;
}
//--------------------------------------------------------------
void ofApp::update(){
player.update();
player.setSpeed(speed);
player.isFrameNew();
if(doShaderT){
doShader = !doShader;
}
// [...]
}
//--------------------------------------------------------------
void ofApp::draw(){
fbo.begin();
ofClear(0,0,0,255);
if( doShader ){
player.getTexture().bind();
shader.begin();
shader.setUniformTexture("tex0", player.getTexture(), 0);
shader.setUniform1f("saturation", saturacao);
shader.setUniform1f("contrast", contraste);
shader.setUniform1f("brightness", brilho);
}
player.draw(-player.getWidth()/2, -player.getHeight()/2);
if( doShader ){
shader.end();
player.getTexture().unbind();
}
fbo.end();
ofSetColor(255);
fbo.draw(0,0,1920,1080);
// [...]
}
OF 10.1
XCode 9.4.1
macOS Mojave
hope someone can help me with some new ideas!
thank you!!