ランバート拡散照明

OpenGLプログラミングメモ内検索 / 「ランバート拡散照明」で検索した結果

検索 :
  • 拡散照明
    環境光だけではのっぺりとした図にしかなりません。 立体的に見せるには陰影を付けてやらなければなりません。 拡散反射光は光源から入ってくる光を全ての方向に均一に反射します。 紙のようにざらざらとした光沢の少ないものの表現に適しています。 反射する光の量は、入射する光の量に応じて変化し、入射する光の量は 光のあたる場所によって異なるので、物体の形に陰が付きます。 左の画像は頂点シェーダーのみで陰影を付けたものですが、ハイライトの部分に何やら 線のようなものが見えます。これは頂点単位で色の補間が行われているためです。 右の画像は頂点シェーダーで位置ベクトルと法線ベクトルを計算しておき、フラグメントシェーダーに 渡してフラグメントシェーダーで光の計算をしています。 こうするとピクセル単位で色の計算(補間)が行われるので非常に綺麗な結果が得られます。 フラグメントシェーダーに渡す変数は varyin...
  • メニュー
    ...) 光とは 環境光 ランバート拡散照明 拡散照明 フォン鏡面反射 鏡面反射 クック・トランス金属反射 金属反射 カラーシフト 簡易シャドウイング 距離減衰 スポットライト フォグ GLSL テクスチャマッピング GLSL マルチテクスチャ 床面反射 オフスクリーンレンダリング 環境マッピング 投影マッピング シャドウマッピング ソフトシャドウ 水面 バンプマッピング 視差マッピング ディスプレースメントマップ 輪郭線抽出(IDマップ) 輪郭線抽出(深度マップ) 輪郭線抽出(法線マップ) セルシェーディング SSAO ハードウェアスキニング ▲▲▲▲▲ ▼ シェーダー 画像フィルタ偏 色の反転 ぼかしフィルタ ガウスフィルタ モザイク モノトーン セピア調 残像 モーションブラー 輪郭抽出 フォーカスフィルタ ▲▲▲▲▲ ▼ 3Dライブラリ編 Irrlich...
  • .Xを読み込んでみる2(解析編2)
    それでは、前回の続きでテクスチャを設定してUVと法線を出力する ようにしてXファイルを作りました。 例によってテンプレート部分は除去しています。 xof 0302txt 0064 Header{ 1; 0; 1; } Mesh {  3;  1.08418;-0.00726;0.62110;,  -1.10385;-0.70444;-1.10694;,  -1.38258;1.10387;-0.06233;;    1;  3;0,1,2;;    MeshMaterialList {   1;   1;   0;;   Material {    0.800000;0.800000;0.800000;1.000000;;    5.000000;    0.000000;0.000000;0.000000;;    0.000000;0.000000;0.000000;;    Te...
  • C++/CLI:リストビュー
    基本プロジェクトにリストビューを配置します。 プロパティの Dock を Fill にしてウインドウ全体に広げます。 View を Details にします。 GridLines を True にします。 Columns の (コレクション) をクリックして、 ColumnHeaderコレクションエディターを起動します。 追加をクリックするとメンバーに columnHeader1 が追加されます。 Text に「月」と入力します。 さらに、追加をクリックするとメンバーに columnHeader2 が追加されます。 Text に「日」と入力します。 また、追加をクリックして columnHeader3 を作成し、 Text に「支出」と入力します。 Width を 120 にして OK ボタンを押します。 プロパティの Items の (コレクション) をクリッ...
  • C++/CLI:ステータスバー
    基本プロジェクトにステータスバーを配置します。 ステータスバーの左端にプルダウンメニューがあるので クリックしてステータスラベルを作成します。 プロパティの Spring を「True」にして、Text を 「ステータスバー」にします。 TextAlign を「MiddleRight」にします。 ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } My...
  • ツールバーを表示する
    ツールバーを表示します。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #define IDM_DELETE  1060 #define IDM_CUT     1070 menu....
  • トラックバーを表示する
    トラックバーです。 範囲選択とかもできますが説明は省きます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TRACK 109 #define ID_STATIC 110 menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,    ID_EXIT     ...
  • プログレスバーを表示する
    プログレスバーを表示します。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,    ID_EXIT     END     POPUP Test     BEGIN         MENUITEM てすつ ,    I...
  • C++/CLI:トラックバー
    基本プロジェクトにトラックバーを配置します。 ラベルも配置します。 ラベルのプロパティのフォントサイズを24にします。 トラックバーをダブルクリックして自動作成されたコードに 以下のコードを追加します。 label1- Text=trackBar1- Value.ToString(); ビルドして実行してみましょう。  MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyFor...
  • ステータスバーを表示する
    前回と同様にしてステータスバーを表示してみました。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 menu.rc #include resource.h IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,    ID_EXIT     END     POPUP Test     BEGIN         MENUITEM ...
  • スクロールバーを表示する
    スクロールバーコントロールです。 ウインドウのスクロールバーと違って任意の位置に表示できます。   resource.h #define IDR_MENU1 100 #define ID_EXIT   101 #define ID_SCROLL  104 #define ID_Help   110 #define ID_STATUS 111 #define IDM_END   114 #define ID_OPTION 115 menu.rc #include windows.h #include resource.h IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,                    ID_EXIT     END     MENUITEM Option    ...
  • レバーコントロールを表示する
    レバーコントロールです。クールバーとも呼ばれます。 つまみを掴んで各種コントロールを移動できます。 一行にまとめたり複数行にしたりもできます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_BUTTON 109 #define ID_EDIT 110 #define ID_COOL 111  menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     PO...
  • C++/CLI:バージョン情報ダイアログ
    バージョン情報ダイアログです。 これまでやってきた事を組み合わせれば これくらいは簡単にできますね。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include version.h #include MyForm.h using namespace Project1; using namespace System; using namespace System Reflection; [assembly AssemblyVersionAttribute( 1.0.1.0 )]; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return...
  • フラットツールバーを表示する
    素のツールバーではボタンの集合体に見えるのでフラットタイプにしてみます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TOOLBAR    109   #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #defi...
  • C++/CLI:プログレスバー
    前回のアップダウンコントロールの続きです。 プログレスバーを配置します。 アップダウンコントロールをダブルクリックして以下のコードを追加します。      progressBar1- Value = (int)numericUpDown1- Value; ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyForm.h #pragma once nam...
  • C++/CLI:ツールバー
    基本プロジェクトにツールバーを配置します。 プロパティの ImageScaling を Width 32、Height 32 にします。 ツールバーの左端にプルダウンメニューがあるので Button を追加します。 ボタンの Image をクリックして各種アイコンを設定します。 *設定の仕方に Visual Studio 2012 のアイコンライブラリーの入手方法が あるので参考にしてください。 今回は、Visual Studio 2012 アイコンライブラリーを Cドライブにインストールし、 C \VS2012 Modern Image Library\x--archive--x\Objects - VS2012\png_format\Office and VS\ にある画像を使いました。 後は適当にボタンとかセパレーターとかを追加しておきます。 ビルドして実行してみましょ...
  • 環境光
    現実世界では、太陽や照明からの光が様々な物体に反射して光が直接当たらない場所でも 間接的に反射してきた光によってある一定の明るさになっています。 この空間に溢れる光を環境光といいます。 CGでこれを再現するにはラジオシティやグローバルイルミネーションなどがありますが、 計算コストが非常に高く、ゲームなどのリアルタイムな画面更新が求められるプログラムでは とても使う事はできません。 そこで、一般的には割とそれらしく見せるためにシーン全体に影響する一定の色を環境光として 使います。 vec4 ambient = gl_FrontLightProduct[0].ambient; で、OpenGLからアンビエント情報を受け取ります。 これを紐解いていくと、 glLightfv(GL_LIGHT0, GL_AMBIENT, Light); で設定したライトの光の範囲内で glMaterialfv(G...
  • OpenGLのバージョンとGPUの情報を得る
    OpenGLのバージョンとGPUの情報を取得します。 ファイル main.cpp main.cpp #include stdio.h #include GL/freeglut/freeglut.h int main(int argc, char *argv[]) {  glutInitWindowPosition(10, 10);  glutInitWindowSize(10, 10);  glutInit( argc, argv);  glutCreateWindow( Check OpenGL );  printf( OpenGLのバージョン  %s\n ,glGetString(GL_VERSION));  printf( ハードウェアベンダー  %s\n ,glGetString(GL_VENDOR));  printf( GPU  %s\n ,glGetStr...
  • ステータスバーを表示する(64ビット)
    前回と同様にステータスバーを表示してみました。 32ビットと64ビットの両方に対応しています。 resource.h #pragma once #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUI...
  • 左右バランスの変更
    音を左右に振ります。 #include stdio.h #include stdlib.h #include string.h #include algorithm   using namespace std;   #define INFileName sin.wav #define OUTFileName balance.wav #define PAI   3.141592653589793 #define Length 3.00     // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WAV_STERE...
  • PhysX:セットアップ
    NVIDIA PhsyX についての解説です。 NVIDIA PhsyX は良く間違われますが CUDA とは違います。 CUDA は Compute Unified device Architecture の略で NVIDIA社の GPU に対する GPGPU を目的とした フレームワークまたは統合開発環境の事です。 GPU を動作させるためのプログラミング・モデル、およびプログラミング言語(CUDA-C)とそのコンパイラ、ライブラリを言います。 PhsyX は物理エンジンのSDKです。 NVIDIA PhsyX SDK 5.0.2 (2023/9/24最新) https //github.com/NVIDIA-Omniverse NVIDIA PhysX SDK 4.1 https //github.com/NVIDIAGameWorks 内の、 h...
  • C++/CLI:スクロールバー
    基本プロジェクトに HScrollBar と Label を配置します。 VScrollBar と Label も配置します。 HScrollBar をダブルクリックして以下のコードを追加します。 label1- Text = hScrollBar1- Value.ToString(); VScrollBar をダブルクリックして以下のコードを追加します。 label2- Text = vScrollBar1- Value.ToString(); ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int ...
  • 考察
    大まかな歴史 DirectX 名称 登場日 概要 WinG、Display Control Interface Windows 3.1時代 DirectX 1.0 1995年10月 ゲーム作成用のAPI集GameSDKとして発表された。 DirectX 2.0 1996年6月 Direct3D (Immediate Mode, Retained Mode) の登場。 DirectX 3.0 1996年9月25日 DirectSound3D登場、DirectInputの統合。Windows NT 4.0ではSP3以降に同梱。 DirectX 4.0 登場予定だったが、DirectX 3.0からはわずかな変更であり、既にDirectX 5.0がロードマップ上にあったため、ベンダーの要望によりキャンセルされた。 DirectX 5.0 1997年8月4日 Direct3D に DrawPr...
  • 視点の回転(クォータニオン)
    視点を回転させます。 回転方法にはいろいろとあります。 ロールピッチヨー、オイラー角、クォータニオンなどです。 ロールピッチヨーはZ軸、Y軸、X軸を順番に回転させて目的の角度にする方法です。 飛行機の姿勢を表す時によく使われます。最も解り易く素直な方法です。 オイラー角はZ軸、X軸(またはY軸)、Z軸と回転させて目的の角度にする方法です。 3つの軸を使わなくても2つの軸があれば目的の角度にたどり着きます。 しかし、ロールピッチヨーとオイラー角には欠点があります。ジンバルロックと呼ばれるものです。 たとえば、X軸を90度傾けると、Y軸とZ軸が同軸となってしまい、その姿勢を保存して また新たに回転をしようとしたときに問題がおきます。 X軸とY軸をそれぞれ90度傾けると全ての軸が同軸となり一つの方向にしか回せなくなります。 それを解消する方法がクォータニオンです。 クォータニオンは軸を任意に作成...
  • 困った時は
    当サイトのプログラムが正常に動作しない場合 まずは OpenGL とグラフィックスカードのドライバを最新のものにして下さい。 それでも解決しない場合はコメント板にて連絡を下さい。 コンソール画面を消す #pragma comment(linker, "/SUBSYSTEM WINDOWS /ENTRY mainCRTStartup") 以前のVisual Studio 2012辺りまでは、このプラグマでコンソール画面を消す事ができました。 もちろん今でも可能なのですが、現在のVisual Studio 2022ではデフォルトでプロジェクトの プロパティ、リンカーのシステムのサブシステムの項目が『コンソール (/SUBSYSTEM CONSOLE)』 になってしまっています。 これでは最初からプラグマコメントが入力されているので除去できません。 ...
  • C++/CLIでOpenGLを簡単に表示する
    こちらに OpenGL Simple Adapter があるので使わせてもらいます。 nursの日記http //d.hatena.ne.jp/nurs/20080315/1205598655 使い方は OpenGL Simple Adapter.h をインクルードして OpenGLSimpleAdapter のインスタンスを作成して GLAdapter- BeginRender(); と GLAdapter- EndRender(); の間に いつもの OpenGL のコードを記述するだけです。 OpenGL Simple Adapter.h #pragma once #pragma comment( lib, opengl32.lib ) #pragma comment( lib, glu32.lib ) #pragma comment( lib, gdi32.lib ...
  • 距離減衰
    距離による光の減衰です。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {  vec3 L = gl_LightSource[0].position.xyz - P;  f...
  • フォグ
    フォグです。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_FogFragCoord = abs(P.z);//フォグ座標    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  uniform int fogMode;   void main(void...
  • スポットライト
    スポットライトです。 vertex.shader //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  int numLight = 2;   void main(void)  {  gl_FragColor = vec4(0.0);  floa...
  • 簡易輪郭線描画
    普通に描画したモデルの後に少し大きくしたモデルの裏面を黒で描画すると 輪郭線の様に見えます。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include math.h #include GL/freeglut/freeglut.h #define PAI 3.14159 //光源 float lightPos[] =  {10.0, 15.0, 10.0, 1.0};//光源位置 //カメラと視体積 struct View{   //カメラ     float pos[3];//位置(視点)     float cnt[3];//注視点   float dist;  //注視点から視点までの距離   float theta; //仰角(水...
  • キーフレーム
    キーフレームですが、.Xのアニメーションキーのキータイプ情報は 0…回転  w,x,y,zの順にクォータニオンデータ 1…拡大縮小 x,y,zの順に拡大縮小データ 2…平行移動 x,y,zの順に平行移動データ 4…合成行列 回転、拡大縮小、平行移動行列が掛け合わされた4×4行列データ となっています。 回転の情報がクォータニオンになっているのは知っての通り、ジンバルロックを 避けるためです。そして、このクォータニオンは行列を使っています。 キータイプの4が合成行列になっている事もあり、ここから先は行列の知識が 必要になると思います。 そこで、次回からは階層アニメーションからちょっと逸れて、 行列に関する解説に入ります。          
  • C++/CLI:ツールストリップコンテナ
    基本プロジェクトに ToolStripContainer を配置し、 フォームの四辺にドッキングするをクリックします。 このようになりました。 デフォルトではフォームの四辺の上側にツールバーを置くエリアがあります。 フォームの四辺にあるコンテナパネルをクリックするとツールストリップを 配置するエリアが現れます。 とりあえず、上側のエリアにツールストリップを配置します。 ツールバーにボタンとラベルを追加しました。 ビルドして実行してみましょう。 ツールバーのつまみをドラッグしてフォームの四辺に移動させると ツールバーの位置を変える事ができます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace ...
  • 設定の仕方
    Visual Studio 2022 Community のインストール Visual Studio 2022 Community https //visualstudio.microsoft.com/ja/downloads/ こちらから、Visual Studio 2022 Community をインストールしてください。 デフォルトだと開発環境の背景色が『濃色』になっていて見にくいので『淡色』に変更します。 ツール→オプションの環境→全般の配色テーマを『淡色』にします。 これで昔ながらの見やすい開発環境になりました。 Visual Studio 2012 Express for Windows Desktop のインストール Visual Studio 2012 Express for Windows Desktop http //www...
  • .Xを読み込んでみる1(解析編)
    DirectXの .X形式のファイルを読み込んで表示できると便利です。 現在の3Dアプリでは .X と .FBX が主に広く使われているようです。 では、例によってメタセコイアで .X を出力して中を見てみます。 三角ポリゴンを一枚だけ作って保存したものをメモ帳で開いてみます。 xof 0302txt 0064 template Header {   3D82AB43-62DA-11cf-AB39-0020AF71E433  WORD major;  WORD minor;  DWORD flags; } template Vector {   3D82AB5E-62DA-11cf-AB39-0020AF71E433  FLOAT x;  FLOAT y;  FLOAT z; } template Coords2d {   F6F23F44-7686-11cf-8F52-004033...
  • GLSL:テクスチャマッピング
    GLSLでテクスチャを描画します。 vertex.shader   //フラグメントシェーダーに渡す変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル    void main(void)   {     P = vec3(gl_ModelViewMatrix * gl_Vertex);     N = normalize(gl_NormalMatrix * gl_Normal).xyz;     gl_TexCoord[0] = gl_MultiTexCoord0;     gl_Position = ftransform();   } flagment.shader   //頂点シェーダーから受け取る変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル   uniform...
  • C++/CLI:ピクチャボックス
    基本プロジェクトにピクチャーボックスを配置します。 プロパティの DOCK のプルダウンメニューの真ん中にある 部分を選択します。 すると Fill という状態になってピクチャーボックスが ウインドウ全体に広がります。 下の画像を test.jpg として保存してプロジェクトのフォルダに 移動させておきます。 Image プロパティの ...となっている所をクリックすると ファイルダイアログが出てくるので、test.jpg を選択します。 Image プロパティの Size となっている所に画像サイズが 表示されているので、それを参考にウインドウサイズを変更します。 MyForm のタイトルバーを選択して MyForm のプロパティを表示します。 Size の左の+になっている所をクリックして-にします。 Width と Height を画像のサイズにします。 ビ...
  • コメント板
    簡易掲示板です。 何かありましたらコメントを。 てすと -- 管理人 (2010-03-22 11 30 06) directXのホウノライブラリは開発中止になったんですか? -- 人間 (2010-09-26 23 25 06) OpenGL最近勢いづいてていい感じですね。C#+OpenTKの開発のしやすさもなかなかすごいし、ゲーム業界もOpenGLにシフトしないかな。 -- shocker (2010-09-29 02 37 52) カンリニンサァァアアーーーン -- 人間 (2010-10-05 21 44 33) DX Wrapperライブラリの開発は無期限停止状態です。 -- 管理人 (2010-10-10 19 40 54) ゲーム業界でもPC、XBOX、DC以外はOpenGL採用の方向になっているようです。 -- 管理人 (...
  • 投影マッピング
    投影マッピングです。 プロジェクターで投影させたようにテクスチャを張れます。 proj.png vertex.shader varying vec3 P; varying vec3 N; void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   gl_TexCoord[0] = gl_TextureMatrix[0] * gl_Vertex;//オブジェクトの座標値との積   gl_Position = ftransform(); } flagment.shader varying vec3 P; varying vec3 N; uniform sampler2D sampler; void main(void) {  ...
  • .MQOを自力で読み込んでみる2(読み込み編)
    今回は読み込み編という事で、実際に .MQO ファイルを読み込んでみます。 前回の解析編で描画に使うデータがわかりましたのでそれを自作のクラスと 構造体にガンガン詰め込んでみます。 ファイルの読み込みには C++ の fstream を使おうかな?と思ったんですが、 効率があまりよくないので GLmetaseq の旧版を参考に C言語の fscanf_s と fgets を使う事にしました。 GLmetaseq の旧版ではディスプレイリストにガンガン登録して、それをサクッと表示 していますが、私的にはディスプレイリストは使わない方向で行きます。 何故かというと、ワイヤーフレーム表示とか将来的にはスキニングとかもやりたいからです。 #include string #include vector using namespace std; //3つのベクトル struct Vector...
  • MESH VIEW(メッシュビューア)
    MESH VIEW (OPENGL プログラミングメモ) ver1.16 ダウンロードはこちら MeshView ver1.16.zip //////////////////////////////////////////////////////////////////////////// MeshView [OPENGL プログラミングメモ] ver1.16 作者 OPENGLプログラミングメモ ホームページ(OPENGLプログラミングメモ) https //w.atwiki.jp/opengl/ ホームページ2(MeshView) http //www.meshview.jp/ ///////////////////////////////////////////////////////////////////////...
  • Visual Studio 2022 DE Visual C++ 2015
    Visual Studio 2022 DE Visual C++ 2015 とは? かつて、Visual Studio 2015 をインストールしようとしてできなかった人が結構居るのではないでしょうか? 何故かインストールに失敗してできなかった人が結構居ると思います。(当サイト管理人もその一人です。。。) Ж できました。。。 Visual Studio 2017 や Visual Studio 2019 、果ては Visual Studio 2022 まであるのに今更何故 2015 なのか? と、思う方は要ると思います。 結論から言うと PhysX の最新版 ver 5.0.2 や ver 4.1 をコンパイルするには Visual C++ 2015でないとコンパイルできないからです。 と、いう訳で Visual Studio 2022 から Visual C++...
  • ページャーコントロールを表示する
    ページャーコントロールです。 他のコントロールに押し込まれて隠れているコントロールを スクロールするための物です。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_BUTTON 109 #define ID_EDIT 110 #define ID_COOL 111 menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     POPUP File     ...
  • GLSL:マルチテクスチャ
    マルチテクスチャです。 今回のプログラムは地球の地表テクスチャと雲のテクスチャを合成し、 地表よりも雲を遅れて回転させています。 マウスの左ドラッグで視点を変更できます。 画像はNASAがフリーで配布している物を縮小して使用しています。 earth.png cloud.png vertex.shader varying vec3 P; varying vec3 N; void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal).xyz;   gl_TexCoord[0] = gl_MultiTexCoord0;   gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord0;  ...
  • アップダウンコントロールを表示する
    アップダウンコントロールを表示します。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,    ID_EXIT     END     POPUP Test     BEGIN         MENUITEM てすつ ,...
  • C++/CLI:ツリービュー
    基本プロジェクトにツリービューを配置します。 サイズを大きくします。 プロパティの Nodes の(コレクション)をクリックすると TreeNodeエディターが起動します。 ルートの追加をクリックして Text を「ルート」にします。 子の追加をクリックすると「ノード1」が作成されます。 適当にノードを作成してみます。 ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog(); ...
  • ツールチップを表示する
    ツールチップです。一定時間ツールバーの上でマウスカーソルを停止すると現れます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TOOLBAR    109   #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #d...
  • 水面
    水面と集光模様です。 vertex.shader   //フラグメントシェーダーに渡す変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル void main(void){   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   gl_TexCoord[0] = gl_TextureMatrix[0] * gl_Vertex;   gl_Position = ftransform(); } flagment.shader   //頂点シェーダーから受け取る変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル uniform sampler2D s...
  • 簡易シャドウイング
    平面上に影のように見えるオブジェクトを描画します。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    vec3 L = normalize(gl_LightSource...
  • メッセージボックスを表示する
    メッセージボックスです。 resource.h   #define IDR_MENU1  100   #define ID_EXIT   101   #define ID_TEST   102   #define ID_A   103   #define ID_B   104   #define ID_Menu   105   #define ID_Whats  106   #define ID_Help   107   #define ID_STATUS  108 menu.rc  #include resource.h    IDR_MENU1 MENU   BEGIN       POPUP File       BEGIN           MENUITEM Exit ,    ID_EXIT       END       POPUP Test       BE...
  • メッセージボックスを表示する(64ビット)
    メッセージボックスです。 32ビットと64ビットの両方に対応しています。 resource.h #pragma once #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUITEM てすつ , ...
  • @wiki全体から「ランバート拡散照明」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索