void Game::Update()
{
D3D11_MAPPED_SUBRESOURCE subResource;
ZeroMemory(&subResource, sizeof(subResource));
_deviceContext->Map(_constantBuffer.Get(), 0, D3D11_MAP_WRITE, 0, &subResource);
::memcpy(subResource.pData, &_transformData, sizeof(_transformData));
_deviceContext->Unmap(_constantBuffer.Get(), 0);
}
이 코드가 의미하는 바를 렌더링 파이프라인 관점에서 풀어보면
Map / Unmap은 “Central Processing Unit가 쓸 수 있게 잠깐 문 열어주는 것”이다.
- Map : “이 리소스에 Central Processing Unit가 쓸 수 있게 주소를 주세요.”
- subResource.pData : “여기가 지금 Central Processing Unit가 쓸 수 있는 메모리 시작 주소입니다.”
- memcpy : “Central Processing Unit에서 계산한 구조체를 그 주소에 복사합니다.”
- Unmap : “이제 다 썼습니다. Graphics Processing Unit가 읽을 수 있게 다시 닫아주세요.”
“매 프레임마다 Transform 데이터를 Constant Buffer에 복사해서 Graphics Processing Unit가 셰이더에서 읽게 한다.”
'그래픽스 > DX11' 카테고리의 다른 글
| 던그리드 D2D11 모작 (0) | 2026.01.07 |
|---|---|
| 신기한 로테이션 판정 수식 (0) | 2025.11.28 |
| D3D11 Phong vs Blinn-Phong (6) | 2025.06.15 |
| D3D11 Resize Viewport (0) | 2025.06.10 |
| HLSL 개요 (2) | 2025.06.03 |