2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ShaderToy+openFrameworksでクリエイティヴヴィジュアルを<その1>

Posted at

#ShaderToy+openFrameworks
画像処理とかビデオアートとかVJとかで、ShaderToy+openFrameworksって最強の組み合わせだと思うんですが、ofxShadertoyのサンプルが見当たらないのは何故でしょう?ShaderToyに興味ある人は達人が多いので、初歩的な技術解説は不要なのでしょうか?<本当に無いんです。>
私が見落としているだけでしょうか?
 というわけで、自力で試行錯誤しながら、たどりついたところまでメモ代わりに記録しておきます。<その1>はopenFameWorksでShaderToyのコードを表示するところまでです。

 先ず、openFrameworksのShaderToyのアドオン、ofxShadertoyをサーチしてダウンロードし、
addonsフォルダにコピーします。
(windows版用にコードを多少変更したような気がしますが、忘れましたので、思い出したら情報を追加します。)
 そして、projectGenerator.exeを起動して、アドオンにofxShaderToyを指定し、適当なプロジェクト名を【下図】のように設定して、緑のGenerateボタンをプレスします。

コメント 2020-07-08 111927.png

ここでプロジェクトが開きますので、
main.cpp をShaderToyの表示用に変更します。

main.cpp
int main( ){
ofGLFWWindowSettings  settings;
	settings.setGLVersion(3, 2);    // <--- ofxShadertoy NEEDS the GL Programmable Renderer
	settings.setSize(640, 480);
	ofCreateWindow(settings);       // <-------- setup the GL context

	// this kicks off the running of my app
	ofRunApp(new ofApp());
}

次に ofApp.h に
#include "ofxShadertoy.h"
と、
ofxShadertoy shadertoy;
を追加します。
そして、ofApp.cppのseup()と、draw()に下記のようなコードを追加します。

ofApp.cpp
void ofApp::setup(){
	shadertoy.load("shaders/00.frag");
	ofSetFrameRate(60);
	shadertoy.setAdvanceTime(true);
	
	ofDisableArbTex(); // very important!!!
}

これは、ShaderToyのコードを読み込んで、表示の準備をします。

ofApp.cpp
void ofApp::draw(){
	shadertoy.draw(0, 0);
}

上は、ShaderToyのGLSLを描画します。
コードの基本はこれだけです。
###ShaderToyのデータを用意する。
https://www.shadertoy.com/ にシェーダートイの例が沢山ありますので、この中からopenFrameworksで表示したいコードをコピペします。たとえば、
https://www.shadertoy.com/view/Msl3WH

ダウンロード.png

00.fragいうテキストファイルにコードをコピーして、dataフォルダの下にshadersフォルダを作成し、ここに00.fragを置きます。
これはBufferを使っていない例です。
以下のようにBufferを使ってWebcamの入力にイフェクトを加えることもできます。この例ではレイヤーは3層になってます。
https://www.shadertoy.com/view/wttSRM
(このようなopenFrameworks+ofxShadertoyでBufferの使う方法は<その2>以降で解説いたします。)

これで、準備ができました。
windowsのプロジェクトをgit
https://github.com/ultrahamlet/example01
に置きましたので、ビルドして走らせてみてください。

###Bufferを使った例や音声データを入力する例は<その2で>###

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?