2011-11-15 18 views
0

皆さん、誰でもDirect3D C++でテクスチャマッピングを手伝うことができます。私は基本的なゲームを作り、その環境をテクスチャ化したいと思う。Direct3D C++テクスチャマッピング

struct CUSTOMVERTEX 
{ 
    FLOAT x, y, z; // The position for the vertex 
    DWORD color;  // The vertex color 
}; 

は、これは私が四角形を描画する方法を次のとおりです:

CUSTOMVERTEX g_Vertices[] = 
{ 

    {-1.0f,-1.0f,-1.0f,0xFF0000FF},{-1.0f, 1.0f,-1.0f,0xFF0000FF}, 
    { 1.0f, 1.0f,-1.0f,0xFF0000FF}, { 1.0f, 1.0f,-1.0f,0xFF0000FF}, 
    { 1.0f,-1.0f,-1.0f,0xFF0000FF},{-1.0f,-1.0f,-1.0f,0xFF0000FF}, 

}; 
私は私は私の描画コードのカスタム頂点を作成しています、多くのオンラインチュートリアルを見てきましたが、今のところ

をまったく運を持っていませんでしたここ

はバッファです:

//*************************** Vertex Buffer **************************** 
if(FAILED(g_pd3dDevice->CreateVertexBuffer(numberOfVertecies*sizeof(CUSTOMVERTEX), 
     0 /* Usage */, D3DFVF_CUSTOMVERTEX,D3DPOOL_MANAGED, &g_pVB, NULL))) 
    MessageBox(hwnd,"Vertex Buffer problem",NULL,NULL); 

VOID* pVertices; 

if(FAILED(g_pVB->Lock(0, sizeof(g_Vertices), (void**)&pVertices, 0))) 
    MessageBox(hwnd,"Vertex Lock Problem",NULL,NULL); 

memcpy(pVertices, g_Vertices, sizeof(g_Vertices)); 

g_pVB->Unlock(); 

、ここでは正方形である:

g_pd3dDevice->SetTransform(D3DTS_WORLD, &g_matWorld); 
g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX)); 
g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); 
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 20); 

四角形をどのようにテクスチャするか見たいので、私は全体の環境をテクスチャリングすることができますか?あなたは、あなたが頂点テクスチャ座標にその色の値を変更作成すると

struct CUSTOMVERTEX 
{ 
    FLOAT x, y, z; // The position for the vertex 
    FLOAT tu, tv; // Texture Coordinates 
}; 

にご頂点構造を変更する必要がテクスチャマッピングを実装する場合((0,0)が対応して調整することを忘れてはいけない

答えて

2

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1) 

ロードD3Dを使用してテクスチャ:テクスチャマップの左上隅に

また、あなたの頂点ストリーム宣言を適応する必要がありXCreateTextureFromFile()。また、ロードされたテクスチャを使用するようにデバイスに指示する必要があります。それを行う方法については、DirectX SDKチュートリアル5を参照してください。

単にテクスチャを適用したいのであれば(テクスチャマッピングと色別に、単にテクスチャを適用することができれば各頂点に色を付けたいのですが)、私が書いた頂点構造体を使用してくださいチュートリアルのものの代わりに。

関連する問題