Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengatur deklarasi aliran puncak saat ini.
Sintaks
HRESULT SetFVF(
[in] DWORD FVF
);
Parameter
[in] FVF
Jenis: DWORD
DWORD yang berisi jenis vertex fungsi tetap. Untuk informasi selengkapnya, lihat D3DFVF.
Mengembalikan nilai
Jenis: HRESULT
Jika metode berhasil, nilai yang dikembalikan D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat berupa: D3DERR_INVALIDCALL.
Keterangan
Berikut adalah langkah-langkah yang diperlukan untuk menginisialisasi dan menggunakan simpul yang memiliki posisi, difus dan warna spekular, dan koordinat tekstur:
-
Tentukan jenis vertex kustom dan kode FVF.
struct LVertex { FLOAT x, y, z; D3DCOLOR specular, diffuse; FLOAT tu, tv; }; const DWORD VertexFVF = (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1 ); -
Buat buffer vertex dengan ruang yang cukup untuk empat simpul menggunakan IDirect3DDevice9::CreateVertexBuffer.
g_d3dDevice->CreateVertexBuffer( 4*sizeof(LVertex), D3DUSAGE_WRITEONLY, VertexFVF, D3DPOOL_DEFAULT, &pBigSquareVB, NULL ); -
Atur nilai untuk setiap puncak.
LVertex * v; pBigSquareVB->Lock( 0, 0, (BYTE**)&v, 0 ); v[0].x = 0.0f; v[0].y = 10.0; v[0].z = 10.0f; v[0].diffuse = 0xffff0000; v[0].specular = 0xff00ff00; v[0].tu = 0.0f; v[0].tv = 0.0f; v[1].x = 0.0f; v[1].y = 0.0f; v[1].z = 10.0f; v[1].diffuse = 0xff00ff00; v[1].specular = 0xff00ffff; v[1].tu = 0.0f; v[1].tv = 0.0f; v[2].x = 10.0f; v[2].y = 10.0f; v[2].z = 10.0f; v[2].diffuse = 0xffff00ff; v[2].specular = 0xff000000; v[2].tu = 0.0f; v[2].tv = 0.0f; v[3].x = 0.0f; v[3].y = 10.0f; v[3].z = 10.0f; v[3].diffuse = 0xffffff00; v[3].specular = 0xffff0000; v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB->Unlock(); -
Buffer vertex telah diinisialisasi dan siap untuk dirender. Contoh kode berikut menunjukkan cara menggunakan FVF warisan untuk menggambar persegi.
g_d3dDevice->SetFVF(VertexFVF); g_d3dDevice->SetStreamSource(0, pBigSquareVB, 0, sizeof(LVertex)); g_d3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0 ,2);
-
Tentukan jenis vertex kustom dan kode FVF.
struct Vertex { FLOAT x, y, z; FLOAT nx, ny, nz; FLOAT tu, tv; }; const DWORD VertexFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 ); - Buat buffer vertex dengan ruang yang cukup untuk empat simpul menggunakan IDirect3DDevice9::CreateVertexBuffer (mirip dengan contoh di atas).
-
Atur nilai untuk setiap puncak.
Vertex * v; pBigSquareVB->Lock(0, 0, (BYTE**)&v, 0); v[0].x = 0.0f; v[0].y = 10.0; v[0].z = 10.0f; v[0].nx = 0.0f; v[0].ny = 1.0f; v[0].nz = 0.0f; v[0].tu = 0.0f; v[0].tv = 0.0f; v[1].x = 0.0f; v[1].y = 0.0f; v[1].z = 10.0f; v[1].nx = 0.0f; v[1].ny = 1.0f; v[1].nz = 0.0f; v[1].tu = 0.0f; v[1].tv = 0.0f; v[2].x = 10.0f; v[2].y = 10.0f; v[2].z = 10.0f; v[2].nx = 0.0f; v[2].ny = 1.0f; v[2].nz = 0.0f; v[2].tu = 0.0f; v[2].tv = 0.0f; v[3].x = 0.0f; v[3].y = 10.0f; v[3].z = 10.0f; v[3].nx = 0.0f; v[3].ny = 1.0f; v[3].nz = 0.0f; v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB->Unlock(); - Gambar objek (mirip dengan contoh di atas).
Persyaratan
| Persyaratan | Nilai |
|---|---|
| Target Platform | Windows |
| Header | d3d9helper.h (termasuk D3D9.h) |
| Pustaka | D3D9.lib |