GLFW
ImGuiをModernGLと組み合わせて使いたいと思い実装してみました.
簡単なCompute Shader(コンピュートシェーダ)を実装する.単に,画面の座標値 (uv) をRG色に割り当てるだけ.これで,大抵のことはできるようになった!
ModernGLでCubemap(キューブマップ)を使ってみる. キューブマップテクスチャを用意して,それを立方体の6面にマッピングする.単なる動作確認が目的なので,できるだけ簡単に実装する方針.
Texture Arrayを実装する.上下キーを押すことでTexture Array内の2つのテクスチャを切り替える.
今回はαブレンディングを実装する.単にQuadを半透明に表示する.
今回はバックバッファに書き込まれている内容をメインメモリに読み込んで表示してみる.よく使うので.
今現在のModernGLの最新バージョンは5.6.4なのだが,次期アップデート (5.7.0) から含まれている機能が必要になった.そこでプレビュー版の5.7.0をインストールしてみることにした.
マウスをグリグリするとカメラがある点を注視しながら移動するOrbitCameraを実装する.結論,ModernGLが用意しているクラスを使えばいいだけなので,とても簡単.
前回は,既存のモデルデータを読み込んでいた.今度は自分で矩形のメッシュ (Quad) を定義して表示する.今回,少し問題に直面した...
Stanford Bunnyを読み込めたので,以下の2つに挑戦する. 自分で用意したシェーダを使う それをGLFWウィンドウに表示する やはりフレームは自分で更新したい
そろそろPythonでOpenGLを使ってもいいんじゃないかと思い始めて,よいラッパー (Wrapper) を探し始めた.そこで見つけたのがModernGL. ロゴはダサイけど,チラ見した感じ,設計方針に好感が持てた(私のC++での設計方針に似ていた)ので使ってみることにし…
前回はImGui + GLFW + GLEWを使ってGLFWのウィンドウ内にImGuiのウィジェットを表示させる公式のサンプルを動かしました.今回は,自分のコードにImGuiを導入するとともに,ImGuiには欠けているダイアログ機能を追加します. mugichoko.hatenablog.com 前回…
OpenGLでのGUI開発用ライブラリImGuiを使ってみる.正式にはDear ImGui (Immediate Mode Graphical User Interface) と呼ぶとのこと.今回は,ImGuiの”Im”たる所以を調べ,サンプルをビルドして実行することが目標です. なぜImGui? Im (Immediate Mode)? …
大域的目標 実行速度の向上 問題の確認 改善 実行結果 GitHubへの公開 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装している.今回が7回目. 前回(以下,参照)…
大域的目標 できた? 方針の再転換 グローバルマップの管理 点のマージと削除 残った問題 パラメータ調整 実行速度 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装…
大域的目標 今回の目標 実装内容 実装結果 所感 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装している.今回が5回目.モチベーションに関する詳細は初回の記事を…
大域的目標 画像ピラミッドの実装 画像ピラミッドを使ったICPの実装 実装結果 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装している.今回が4回目.モチベーショ…
大域的目標 今回の目標 ICPアルゴリズムの理解 ICPアルゴリズム(画像ピラミッドなし)のGPU実装 実装結果 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの日誌記録.ちょっとずつ実装して…
目標 実装環境 サンプルプログラム pbo.h pbo.cpp 結果 目標 Pixel Buffer Object (PBO) を使って,GPUメモリにあるテクスチャ(画像)をメインメモリに読み込む.「glReadPixels()やglGetTexImage()は遅い!」でも「PBOを使うと速い!」という話をよく聞く…
目標 実装環境 参考サイト main.cpp bilateralFilter.comp 結果 目標 前回(下記参照)の予告通り,Bilateral Filterを実装する.
目標 実装環境 処理内容 流れ 頂点マップの計算 法線マップの計算 サンプルプログラム main.cpp calcVertMap.comp calcNormMap.comp 結果 参考文献 目標 前回(下記参照)は,Compute Shaderを使って,3DCGを描画した際に生成されるZバッファの線形化を行う…
目標 Zバッファの線形化とは? 実装環境 レンダリングの流れ サンプルプログラム main.cpp zbuff.comp 結果 目標 前回(下記参照)までの実装を少し変更して,Compute Shaderを使って,3DCGを描画した際に生成されるZバッファの線形化を行うプログラムを作成…
目標 実装環境 レンダリングの流れ サンプルプログラム main.cpp sample.comp 結果 目標 前回(下記参照)までの実装を組み合わせて用いることで,3DCGを描画した結果に対してCompute Shaderを使って画像処理(Sobelフィルタによるエッジ検出)を行うプログ…
目標 実装環境 レンダリングの流れ サンプルプログラム shaderUtil.h shaderUtil.cpp main.cpp sample.comp 結果 目標 こちらの内容を参考に,とりあえずCompute Shaderが動作することを確認する. 尚,今回実装する内容は,前回(下記参照)までの実装に基…
目標 実装環境 レンダリングの流れと結果 サンプルプログラム modelTex.h modelTex.cpp fbo.h fbo.cpp main.cpp 目標 前回(下記参照)は,テクスチャマッピングを行うプログラムを作成しました. 今回は,そのプログラムをベースに,FBOに描画した結果を四…
目標 実装環境 DevILのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム model.h model.cpp modelTex.h modelTex.cpp main.cpp modelTex.vert modelTex.frag 結果 目標 前回のプログラムをベースに,今度はテクスチャマッピングを実装する…
目標 実装環境 GLMのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム window.h window.cpp shaderUtil.h shaderUtil.cpp main.cpp simple.vert simple.frag 結果 目標 前回作成したプログラム(下記参照)の固定パイプラインによる描画部…
目標 実装環境 GLEWのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム window.h window.cpp main.cpp 結果 目標 GLFWを使って作成したウィンドウ(下記の前回記事参照)に,固定パイプラインを使って三角形を描画する.ここで初めてGLEWを…
目標 実装環境 サンプルプログラム window.h window.cpp main.cpp 結果 目標 GLFWを使って作成したウィンドウ(下記の前回記事参照)にコールバック関数を用いた,エラーハンドリング,キー操作,スクロール操作を追加する.
目標 実装環境 GLFWのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム window.h window.cpp main.cpp 結果 目標 GLFWを使ってウィンドウを作る*1. *1:GLFWはOpenGLのウィンドウを作る機能を有したライブラリです.ウィンドウを作る以外の…