DirectX

HLSL トゥーンシェーダー

vsample01.fx //--------------------------------------------------------------- float4x4 mWVP; struct VS_OUTPUT { float4 Pos : POSITION; float2 Tex0 : TEXCOORD0; //テクスチャUV }; //----------------------------------------------------------…

HLSL インチキ環境マッピング

「VertexShader インチキ環境マッピング+いろいろ」をHLSLで表現してみるとG9lib.h #pragma once #pragma once #include "windows.h" #include <d3d9.h> #include <d3dx9.h> class G9lib { public: G9lib(void); public: ~G9lib(void); private: LPDIRECT3D9 pD3D; LPDIRE</d3dx9.h></d3d9.h>…

HLS その2

「法線テスト+ダークカラー+スペキュラ 」をHLSLに置き換えると vsample01.fx //--------------------------------------------------------------- float4x4 mWVP; struct VS_OUTPUT { float4 Pos : POSITION; float4 Col : COLOR0; }; //-----------------…

HLSL 法線テスト+平行色光

VertexShaderからHLSLの方に変更、まずは「VertexShader 法線テスト+平行色光源」を作ってみます。G9lib.h #pragma once #pragma once #include "windows.h" #include <d3d9.h> #include <d3dx9.h> class G9lib { public: G9lib(void); public: ~G9lib(void); private: LP</d3dx9.h></d3d9.h>…

VertexShader のプログラム組み込み

「VertexShader インチキ環境マッピング+いろいろ 」などのソースの場合、ヴァーテックスシェーダーのプログラムのファイル「vsample01.vsh」を読み込んで使用していたのですがCのソースに埋め込んで見ましょう。G9lib.cpp : //---------------------------…

VertexShader インチキ環境マッピング+いろいろ

「VertexShader インチキ環境マッピング 」を参考に、これにダークカラーを加えてvsample01.vsh //c0-c3 ビュー+透視変換マトリックス //c4 汎用固定値 //c5 平行光源向き //c6 光源色 //c7 ダークカラー // //v0 頂点の座標値 //v1 法線情報 vs_1_1 // バー…

VertexShader インチキ環境マッピング

テクスチャ用に「LPDIRECT3DTEXTURE9 image01」を追加します。 G9lib.h #pragma once #pragma once #include "windows.h" #include <d3d9.h> #include <d3dx9.h> class G9lib { public: G9lib(void); public: ~G9lib(void); private: LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3</d3dx9.h></d3d9.h>…

VertexShader 法線テスト+ダークカラー+スペキュラ

「VertexShader 法線テスト」を参考に まずはスペキュラの設定をONにします。 G9lib.cpp : //------------------------------------------------------------------------------ //■テスト描画 //-------------------------------------------------------…

VertexShader 法線テスト+ダークカラー

物体に光を当てた反対側は、よくCGでは黒にしてしまいがちなのですが現実ではそういう事はほとんどないので、その色をダークカラーとして指定してみます。 「VertexShader 法線テスト」のVertexShaderをいろいろと編集してみます。 vsample01.vsh //c0-c3 ビ…

VertexShader 法線テスト+平行色光源

「VertexShader 法線テスト」のVertexShaderをいろいろと編集してみます。 昨日のソースには光源に色がなかったので、今回はその部分を追加してみます。 ■その1 vsample01.vsh //c0-c3 ビュー+透視変換マトリックス //c4 汎用 //c5 平行光源 //c6 光源の色 /…

VertexShader 法線テスト+平行光源

「VertexShader 法線テスト」のVertexShaderをいろいろと編集してみます。■その1 vsample01.vsh //c0-c3 ビュー+透視変換マトリックス //c4 汎用固定値 //c5 光向き // //v0 頂点の座標値 //v1 法線情報 vs_1_1 // バージョン命令 def c4, 0.0f, 0.5f, 1.0f,…

VertexShader 法線テスト

前のサンプルは、モデルデータが「頂点」+「色」でしたが今回からは「頂点」+「方線」を使用します。 model.h D3DVERNORMAL modelData[] = { { 0.050000f,3.598024f,1.094069f,0.000000f,-0.951288f,-0.308303f}, { 0.737161f,3.598024f,0.870797f,-0.181216…

VertexShader 無意味な実験

なんとなく、ヴァーテックスシェーダを使ってっているのに、内部で計算しないとどうなるのかなと思ってvsample01.vsh //c0-c3 ビュー+透視変換マトリックス // //v0 頂点の座標値 //v1 色情報 vs.2.0 dcl_position v0 dcl_color v1 mov oD0,v1 mov oPos,v0と…

転置行列

「DirectX9 VertexShader」では、シェーダにマトリックスを与える前に転置行列の計算をしていたのですが、シェーダ内部で計算するようにしてみました。 vsample01.vsh //c0-c3 ビュー+透視変換マトリックス // //v0 頂点の座標値 //v1 色情報 vs.2.0 dcl_pos…

DirectX9 VertexShader

「DirectX9 モデルデータ 」のプログラムをバーテックスシェーダーを使って表現してみました。 ますはバーテックスシェーダープログラム、 vsample01.vsh //c0-c3 ビュー+透視変換マトリックス // //v0 頂点の座標値 //v1 色情報 vs.2.0 dcl_position v0 dcl…

DirectX9 モデルデータ

古いプログラムになるのですが「DirectX9とりあえず描画」のプログラムは、モデル情報をメインメモリに持っていました。 これをもっと早く描画するためにGPUに転送してからにしたいと思います。■G9lib.h #pragma once #include "windows.h" #include <d3d9.h> #inclu</d3d9.h>…

Visual Studio 2008 Express Edition

■せっかくなので「インストール」にしてみよう 2005の頃に比べ「Platform SDK」がそのまま入っているので、便利便利 でも、リソースエディタはやっぱ入ってないのですね今まで作ったDirectX9のサンプルも、そのまま動いたので、ゲーム作るには問題ない環境で…

くねくねサンプル(解説)

■「D3DFVF_XYZB1」って最近使わないのですが どうも、ハードでサポートしてないケースなどあるので、あまし使っていないのですが 今回、使用して見ようと思います ■頂点フォーマット こんな感じですかね struct D3DVERTEXB1 { float x,y,z; float blend1; en…

くねくねサンプル(ボーン)

頂点のフォーマットで「D3DFVF_XYZB1」に触れてなかんなのですが、くねくねするのに便利なので説明しようと思います。G9lib.h struct D3DVERTEXB1 { float x,y,z; float blend1; enum { FVF = D3DFVF_XYZB1 } ; }; G9lib.cpp //----------------------------…

テクスチャ2枚はりはり(ブレンド)

今回は、1枚のポリゴンに2枚のテクスチャをはるので「D3DFVF_TEX2」を設定して2枚分のUV値の設定をします。 struct D3DVERTEXTEX2 { float x,y,z; float u1,y1; // 1枚目のUV値 float u2,y2; // 2枚目のUV値 enum { FVF = D3DFVF_XYZ | D3DFVF_TEX2 } ; }; ■…

テクスチャ2枚はりはり

■1枚のポリゴンに複数のテクスチャを張ってみよう G9lib.cpp void G9lib::Init() { :前回の内容参照 if( D3DXCreateTextureFromFile(pD3DDevice, L"i01.bmp", &image1 ) != D3D_OK ) image1 = NULL; if( D3DXCreateTextureFromFile(pD3DDevice, L"i02.bmp", …

テクスチャはりはり(イメージ)

■テクスチャを管理する変数を定義します。 LPDIRECT3DTEXTURE9 image1; ■テクスチャイメージを読み込みます。 if( D3DXCreateTextureFromFile(pD3DDevice, L"i01.bmp", &image1 ) != D3D_OK ){ image1 = NULL; } ■モデルを描画する前にテクスチャの設定 pD3D…

テクスチャはりはり(3Dデータ)

最初のサンプルではテクスチャを使わなかったので、以下のような定義でしたが //頂点フォーマット struct D3DVERTEXCOR { float x,y,z; // 座標 DWORD color; // 頂点カラー enum { FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE } ; }; テクスチャを扱う場合、テクス…

テクスチャはりはり

ポリゴンにテクスチャをはってみたくなり、設定してみました G9lib.cpp //------------------------------------------------------------------------------ //■ライブラリ初期化 //---------------------------------------------------------------------…

Windモードでの描画サイズ設定

Windモードで800X600のゲーム画面で表示設定したい時のメモです。 CreateWindow でウインドのサイズを指定しても、Wind枠や、メニューバーを含んだ サイズになってしまうので、変換が必要 RECT rect = { 0, 0, 800, 600 } ; AdjustWindowRect( &rect, // ク…

G9lib補足

12/7にソースに関しての説明になります。 ■必要なライブラリをリンクするように記述してます。 #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") ■ダイレクトXの初期化準備 ソースではWindowsモードで動作する事を前提にしています。 D3…

main.cpp補足

12/8のソースに関しての説明になります。■使用するライブラリを登録します。 #pragma comment(lib, "comctl32.lib") #pragma comment(lib, "winmm.lib") ■定期的に呼ぶ。 1秒回に FRAMERATE 回「g9.TestDraw();」を呼び出したい場合以下のような形になります…

描画するためにウインドウズのプログラムも

12/7のクラスを使用して、描画するプログラムです。 //---------------------------------------------------------------- // //---------------------------------------------------------------- #include "windows.h" #include <commctrl.h> // コモンコントロール</commctrl.h>…

DirectX9とりあえず描画

ハードディスクを500GX2台の1テラにしてみました。 そろそろ、プログラムの続きを始めようかと・・・・・DirectX9ので、描画メモを残します ■G9lib.h #pragma once #include "windows.h" #include <d3d9.h> #include <d3dx9.h> class G9lib { public: G9lib(void); public: </d3dx9.h></d3d9.h>…