Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CD3DDevice::SetTransforms(size_t count, LPD3DXMATRIX matrices)
- {
- static LPDIRECT3DTEXTURE9 boneTexture = nullptr;
- DWORD NumBones = MAX_PIVOT + 1;
- DWORD BonesMat = 4; // pixels per bone
- DWORD TexWidth = NumBones * BonesMat;
- DWORD TexHeight = 1; // skeletons
- if(!boneTexture) m_pDevice->CreateTexture(TexWidth, TexHeight, 1, D3DUSAGE_DYNAMIC, D3DFMT_A32B32G32R32F, D3DPOOL_DEFAULT, &boneTexture, NULL);
- D3DLOCKED_RECT rect;
- boneTexture->LockRect(0, &rect, NULL, D3DLOCK_DISCARD);
- ZeroMemory(rect.pBits, NumBones * sizeof(D3DXMATRIX));
- memcpy(rect.pBits, &matrices[0], count * sizeof(D3DXMATRIX));
- boneTexture->UnlockRect(0);
- if (FAILED(m_pEffect->SetFloat("OneOverWidth", 1.0f / TexWidth))) { CTConsole::GetInstance()->Output("Failed to set OneOverAnimTexWidth!\n"); }
- if (FAILED(m_pEffect->SetFloat("OneOverHeight", 1.0f / TexHeight))) { CTConsole::GetInstance()->Output("Failed to set OneOverAnimTexHeight!\n"); }
- if (FAILED(m_pEffect->SetTexture("bonetexture", boneTexture))) { CTConsole::GetInstance()->Output("Failed to set bone texture!\n"); }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement