- Elektromos rásegítésű kerékpárok
- Mr Dini: Mindent a StreamSharkról!
- NASsoljunk: ZyXEL NSA-310 és az FFP
- gban: Ingyen kellene, de tegnapra
- MasterDeeJay: Natív 3Dfx Glide Windows11 alatt Voodoo1 és Voodoo2-vel.
- hdanesz: Hyundai Ioniq 28 kWh - Újabb tapasztalatok - fogyasztás és hatótáv
- eBay-es kütyük kis pénzért
- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja a trendeket...
- Luck Dragon: Asszociációs játék. :)
- Austin F.: Appok teljes képernyőn – immerzív mód [Android]
-
LOGOUT
Új hozzászólás Aktív témák
-
sghc_toma
senior tag
válasz
HThomas #3647 üzenetére
Hello!
Először is létrehozod a buffert:
ID3D10Buffer * g_pCBuffer;
// Fill a buffer description structure
D3D10_BUFFER_DESC cbDesc;
cbDesc.BindFlags = D3D10_BIND_CONSTANT_BUFFER;
cbDesc.ByteWidth = sizeof(D3DXVECTOR4) * 100;
cbDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;
cbDesc.MiscFlags = 0;
cbDesc.Usage = D3D10_USAGE_DYNAMIC;
// Create the buffer
g_pd3dDevice->CreateBuffer(&cbDesc, NULL, &g_pCBuffer);
// Tell the device that we want to use the buffer
g_pd3dDevice->PSSetConstantBuffers(0, 1, &g_pCBuffer);Aztán az .fx fájlban (vagy ha nem használod az effekt frameworkot akkor értelemszerűen a pixel shader-ed forrásában) létrehozol egy konstans buffer változót:
cbuffer MyConstantBuffer
{
float4 Coordinates[100];
};A buffer adatait a shader-ből simán a Coordinates változót használva éred el.
A CPU-ról a bufferbe így tudsz másolni:
D3DXVECTOR4 * data;
// Map buffer to system memory
g_pCBuffer->Map(D3D10_MAP_WRITE_DISCARD, NULL, (void **)&data);
// Fill the buffer
for (int i = 0; i < 100; ++i)
{
data[i].x = 1.0f;
data[i].y = 0.0f;
data[i].z = 1.0f;
data[i].w = 0.0f
}
// Unmap buffer
g_pCBuffer->Unmap();Természetesen a for ciklus helyett úgy töltöd fel a tömböt, ahogy csak akarod (memcpy, például).
Remélem tudtam segíteni. Ja, még valami, amire figyelned kell: egy konstans buffer-ben max 4096db 4*32 bites vektor lehet, és a pixel shader-hez max 14 db cbuffer-t köthetsz.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- ASUS Radeon HD6950 DirectCU II 2GB 256bit GDDR5 EAH6950 DCII/2DI4S/2GD5 Videokártya eladó
- LG 48C3 - 48" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - A9 Gen6 CPU
- AKCIÓ! MSI Z790 i5 14600KF 64GB DDR5 512GB SSD RTX 3070 8GB Rampage SHIVA Enermax 750W
- Csere-Beszámítás! RTX Számítógép PC Játékra! I3 10100F / RTX 2060 12GB / 32GB DDR4 / 500GB SSD
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest