FeedBack用のシェーダを作成しリンクさせた後
... shader.setupShaderFromFile(GL_VERTEX_SHADER, ""); const GLchar* feedbackVaryings[] = {"outPosition"}; glTransformFeedbackVaryings(shader.getProgram(),1, feedbackVaryings, GL_SEPARATE_ATTRIBS); shader.linkProgram();...
Draw関数でShaderを読み込みます
... shader.begin(); shader.setUniform1f("time", ofGetElapsedTimef()); glEnable(GL_RASTERIZER_DISCARD); glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, feedback[frame]); glBeginTransformFeedback(GL_POINTS); vbo[1 - frame].draw(GL_POINTS, 0, numParticles); glEndTransformFeedback(); glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, 0); glDisable(GL_RASTERIZER_DISCARD); shader.end(); ...
シェーダ内容は
#version 330 in vec3 inPosition; out vec3 outPosition; uniform float time; void main() { vec3 pos = inPosition; pos.z=sin(time)*20; outPosition = pos; }
でして、単純に受け取った値をSin関数で更新しているだです
一応初期位置にオブジェクトは描画されるのでダブルバッファリングやシェーダのプログラムへのLinkは問題ないと思うのですが、アニメーションしてくれません
あなたの回答
tips
プレビュー