■ 2014年08月26日 [OpenGL][GLSL] GLSL で画像処理 (5) フレーム間差分
2014年08月26日 21:07更新
雨が凶暴
前回,雨が凶暴と書いてからも雨は猛威を振るい続け,非常に痛ましいことになっております.この前の日曜プログラミングで作った地理院地図 3D を Oculus Rift (DK2 じゃないやつ) で見るプログラムで被災地の上をフライスルーしてみたのですが,住宅と山が入り組んだ非常に複雑な地形でした.私が途方に暮れていても仕方ないのですけど,それでも無力感で下を向いてしまいます.
このムービーは和歌山県内の山間部です.
フレーム間差分
前回のサンプルプログラム (3) は,わずかな書き替えでフレーム間差分の表示を行うようにすることができます.キャプチャした画像を転送するテクスチャを,フレームごとに切り替えるだけです.
... // uniform 変数のインデックスの検索(見つからなければ -1) const GLuint image0Loc(glGetUniformLocation(program, "image0")); const GLuint image1Loc(glGetUniformLocation(program, "image1")); // テクスチャの格納先 int select = 0; // ウィンドウが開いている間繰り返す while (window.shouldClose() == GL_FALSE) { if (camera.grab()) { // キャプチャ映像から画像を切り出す cv::Mat frame; camera.retrieve(frame, 3); // 切り出した画像をテクスチャに転送する cv::Mat flipped; cv::flip(frame, flipped, 0); glBindTexture(GL_TEXTURE_RECTANGLE, image[select = 1 - select]); glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, frame.cols, flipped.rows, GL_BGR, GL_UNSIGNED_BYTE, flipped.data); } ...
書き替え量がわずかなので,独立したプログラムを用意する必要はないと思ったんですが…