2012-11-13 2 views
5

지금 저는 DirectX를 배우고 있습니다. VertexBuffer에 대해 많이 읽었습니다. DX11로 작은 엔진을 만들고 있습니다. (제 질문은 실제로 버전에 의존하지 않습니다.)DirectX - VertexBuffer는 어떻게 작동합니까?

VertexBuffer에서 이해하는 한 Vertices를 저장하고 실제로는 그것은 그래픽 카드에. 글쎄 동적 버퍼에 대해 읽었습니다. 그래서 올바르게 이해한다면 정적 버퍼는 정점으로 초기화되고 초기화 된 정점은 변경되지 않습니다. 그래, 언제 내가 정말로 그것을 필요로 하느냐. 게임이나 다른 어떤 의미에서, 언제 일정한 꼭지점을 가질 수 있습니까? 어쩌면 일부 UI 개체 ..? -하지만 이것들은 매번 일정하지 않습니다. 여러분은 2D 위치를 이동할 수 있습니다 ... 등등 ...

다음 점은 동적 인 정점 버퍼에 관한 것입니다. 예를 들면 : 나는 정점이있는 버퍼를 가지고 있습니다. 정점이 그려집니다. 그런 다음 일부 정점을 추가하거나 제거하려고합니다. 지금은 .. 그래서 단순히 버퍼를 "업데이트"합니다. 그러나 이것이 성과를 위해 정말로 옳고 좋은가? 지형 편집기를 상상해보십시오. 거기에서 수많은 버텍스를 업데이트해야합니다. 나는 일정한 정점을해야합니까 나는 게임 또는 무엇이든에 의미

답변

7

?

실제로 모든 시간. 예를 들어, 정적 지오메트리, 언급 한 UI 객체 등. 움직이는 객체에 대한 약간의 오해가 있습니다. 따라서 혼란 스럽습니다. 정점을 변경하여 객체를 움직이지 마십시오. 대신 쉐이더 파이프 라인을 통해 정점을 배치합니다. 버텍스 쉐이더에서는 임의의 변형을 버텍스에 적용 할 수 있습니다. 예를 들어, 어떤 이유로 나무가 떠 다니는 섬 (또는 부동의 섬에있을 수도 있습니다)을 가지고 전 세계를 이동 한 경우, 꼭지점에 적용되는 변형을 변경하면됩니다 .

그것은 지형 편집기가 어떻게해야 내용에 따라 지형 편집기

을 상상하지만, 일반적으로 다시 여기에 정점을 변경하지 않을 수 있습니다. 나는. 높이를 편집 할 때 꼭지점을 위아래로 움직이지 않고 높이 맵 (대부분 회색조 텍스처)에 쓴 다음 셰이더 파이프 라인에서 GPU의 변환을 다시 계산합니다.