Doku Kaynakları (Direct3D 9)
Doku kaynakları IDirect3DTexture9 arabiriminde uygulanır. Doku arabirimine işaretçi almak için IDirect3DDevice9::CreateTexture yöntemini veya aşağıdaki D3DX işlevlerinden herhangi birini çağırın.
- D3DXCreateTexture
- D3DXCreateTextureFromFile
- D3DXCreateTextureFromFileEx
- D3DXCreateTextureFromFileInMemory
- D3DXCreateTextureFromFileInMemoryEx
- D3DXCreateTextureFromResource
- D3DXCreateTextureFromResourceEx
Aşağıdaki kod örneği, Tiger.bmpbir doku yüklemek için D3DXCreateTextureFromFile kullanır.
// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.
LPDIRECT3DTEXTURE9 pTexture;
D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);
D3DXCreateTextureFromFileilk parametre, IDirect3DDevice9 arabirimine yönelik bir işaretçidir. İkinci parametre Direct3D'ye dokunun yüklendiği dosyanın adını söyler. Üçüncü parametre, oluşturulan doku nesnesini temsil eden IDirect3DTexture9 arabirimine bir işaretçinin adresini alır.
Doku Kaynaklarıyla İşleme
Direct3D, doku aşamaları kavramı aracılığıyla birden çok doku karıştırmayı destekler. Her doku aşaması, doku üzerinde gerçekleştirilebilecek bir doku ve işlemler içerir. Doku aşamalarındaki dokular, geçerli doku kümesini oluşturur. Daha fazla bilgi için bkz. Doku Karıştırma (Direct3D 9). Her dokunun durumu, doku aşamasında kapsüllenmiş.
C++ uygulamasında her doku durumunun IDirect3DDevice9::SetTextureStageState yöntemiyle ayarlanması gerekir. İlk parametrenin değeri olarak aşama numarasını (0-7) geçirin. İkinci parametrenin değerini D3DTEXTURESTAGESTATETYPE numaralandırılmış türünün bir üyesine ayarlayın. Son parametre, belirli doku durumunun durum değeridir.
Doku arabirimi işaretçilerini kullanarak uygulamanız sekiz dokuya kadar bir karışımı işleyebilir. IDirect3DDevice9::SetTextureyönteminiçağırarak geçerli dokuları ayarlayın. Direct3D, tüm geçerli dokuları, işlenen ilkel öğelerle harmanlar.
Not
IDirect3DDevice9::SetTexture yöntemi, atanan doku yüzeyinin başvuru sayısını artırır. Doku artık gerekli olmadığında, uygun aşamadaki dokuyu NULL olarak ayarlamanız gerekir. Bunu yapmazsanız yüzey serbest bırakılmaz ve bellek sızıntısına neden olur.
Uygulamanız IDirect3DDevice9::SetRenderState yöntemini çağırarak geçerli dokular için doku sarmalama durumunu ayarlayabilir. İlk parametrenin değeri olarak D3DRS_WRAP0'den D3DRS_WRAP7'a bir değer geçirin ve u, v veya w yönlerinde kaydırmayı etkinleştirmek için D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 ve D3DWRAPCOORD_3 bayraklarının birleşimini kullanın.
Uygulamanız doku perspektifini ve doku filtreleme durumlarını da ayarlayabilir. Bkz. Doku Filtreleme (Direct3D 9).
İlgili konular