鬱だ氏のう DirectX (Part 9)
■ このスレッドは過去ログ倉庫に格納されています
0714703
NGNGテクスチャ側のuv座標は0〜1なので、
例えば、256*256のビットマップで左上128*128の領域は(0.0,0.0)-(0.5,0.5)だ。
その領域をスクリーンの(100,200)-(228,328)に貼り付けたいのなら、
struct TLVertex {
float x, y, z, w;
float u, v;
};
TLVertex vl[4] = {
{ 100-0.5f, 200-0.5f, 0.0f, 1.0f, 0.0f, 0.0f }, // 左上
{ 100-0.5f, 328-0.5f, 0.0f, 1.0f, 0.0f, 0.5f }, // 左下
{ 228-0.5f, 328-0.5f, 0.0f, 1.0f, 0.5f, 0.5f }, // 右下
{ 228-0.5f, 200-0.5f, 0.0f, 1.0f, 0.5f, 0.0f }, // 右上
};
device->SetTexture( 0, hage );
device->SetFVF( D3DFVF_XYZRHW | D3DFVF_TEX0 );
device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vl, sizeof(TLVertex) );
あーもうここまで親切に書いたんだから理解して頂戴。
何故0.5fを引くかは深くは考えるな。
正確にはピクセルサイズが(1.0f,1.0f)なので、
ピクセルの角を合わせるために0.5fずらしてある。
■ このスレッドは過去ログ倉庫に格納されています