OpenGL(R) API (Application Programming Interface)は、2D/3Dグラフィックスアプリケーション開発のためのAPI です 日本SGIより引用
OpenGL(R) API (Application Programming Interface)は、2D/3Dグラフィックスアプリケーション開発のためのAPI です
公式WEB http://www.opengl.org/
glclock OpenGLを使用したプログラムとして有名 http://www.daionet.gr.jp/~masa/glclock/index.html
PBR におけるToneMapとは 「HDR → LDR の写像」のことです。 画像 Type Image PBR Neutral ACES linear Reinhard KhronosPBRNeutralToneMapはPBRNeutralToneMapと酷似していたので画像は省略しています。 コード glslのコードを貼っておきます。 #ifndef TONE_MAP_LIB_GLSL #define TONE_MAP_LIB_GLSL #define TONE_MAP_PBR_NEUTRAL 0 #define TONE_MAP_KHRONOS_PBR_NEUTRAL 1 #defin…
はじめに 最近よく LearnOpenGL を閲覧するんですが閲覧回数の上限に引っかかって見れない時がありました。 これは嫌だなってことで、ローカルで閲覧できる手順を残しておきます。 ローカルに落としてローカルサーバーを起動して閲覧したら、 MathJax でエラーが出て見れなかったので Mathjax3.2.2 を使うことで対応しました。 もちろんVPNを使えばこんなことはしなくてもOKです。 手順 1. WinHTTrack をインストールする WinHTTrack はインストールも使い方も超簡単です。ググってください。 2. WinHTTrack を用いて LearnOpenGL をダウ…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第10回「バッチレンダリングで描画を高速化」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第10回「バッチレンダリングで描画を高速化」 はじめに なぜバッチレンダリングが必要なのか? ドローコールのコスト パフォーマンス計測基盤の実装 PerformanceManager クラス OperationTimer コンテキストマネージャー 使用例 バッチレンダリングの仕組み 実装の流れ BatchRenderer クラス Transform行列の適用 _apply_tra…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第9回「立方体と球体を描く - EBOで頂点を再利用」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第9回「立方体と球体を描く - EBOで頂点を再利用」 はじめに BufferManagerパターンの実装 BufferManager Protocol BufferManagerのテスト容易性 EBOとは何か? 頂点の重複問題 EBOによる解決 矩形(Rectangle)の実装 頂点データとインデックス サイズ・色の変更 立方体(Cube)の実装 立方体の構造 頂点デ…
前提 OpenGL4.6 射影行列はOrtho Ambient / Diffuse の Matrial は Texture より取得 命名規則などは Blender の GLSL Coding Style を参考にした。 ソース vert #version 460 core // in layout(location = 0) in vec3 in_ls_pos; layout(location = 1) in vec3 in_ls_normal; layout(location = 2) in vec2 in_uv; // out layout(location = 0) out vec2 …
glDrawElementsのみを使う想定 glDrawElementsを使う方が速いので描画関数はこれしか使わない。 頂点の設定の流れ 頂点座標、法線、インデックスの場合 VAO,VBO,VBO,EBO って感じで設定する。 VAO glGenVertexArrays(1, &vao_); glBindVertexArray(vao_); ... glBindVertexArray(0); VBO // VBO --- 位置属性 (location = 0) --- glBindBuffer(GL_ARRAY_BUFFER, vbo_positions_); glBufferData(GL_…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第7回「マウスでカメラ操作」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第7回「マウスでカメラ操作」 はじめに 今回のゴール マウス操作の設計 操作方式の選択 座標系と水平面 クラス設計 MouseControllerクラス コールバックチェーンの重要性 フレーム更新とプロパティ CameraControllerクラス 3Dカメラの更新 水平パン(View行列からの方向取得) 2Dカメラの更新 Appクラスへの統合 更新処理 実行結果 3Dモード 2Dモード まとめ…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第6回「2D/3Dカメラの実装」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第6回「2D/3Dカメラの実装」 はじめに 今回のゴール 正射影と透視投影の違い 正射影(Orthographic Projection) 透視投影(Perspective Projection) カメラクラスの設計 CameraBaseクラス(基底クラス) Camera2Dクラス(正射影カメラ) 2D用View行列 正射影行列の計算 Camera3Dクラス(透視投影カメラ) オービット操作…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第5回「座標変換の基礎」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第5回「座標変換の基礎」 はじめに 座標系の理解 Model行列 View行列(Look At行列) Projection行列(透視投影) Transformクラス シェーダーの更新 行列をシェーダーに渡す imguiでパラメータ調整 ディレクトリ構成 動作確認 よくあるエラーと対処法 三角形が表示されない 描画がおかしい まとめ はじめに 前回は、シェーダーを学び、虹色の三角形を描画しました。 今…
GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第4回「シェーダー入門 - 虹色の三角形を描く」 GitHub Copilotと作る Pythonで OpenGL 3Dプログラミング 第4回「シェーダー入門 - 虹色の三角形を描く」 はじめに コード構成のリファクタリング シェーダーとは グラフィックスパイプライン GLSL(シェーダー言語) 頂点シェーダー フラグメントシェーダー NDC座標系 Shaderクラス VBO/VAOの基礎 三角形の描画 ディレクトリ構成 動作確認 よくあるエラーと対処法 シェーダーコンパイルエラー シェーダーリンクエラー 三…