메쉬를 절반으로 자르거나 적어도 실시간으로 그 안에있는면을 삭제하려고합니다. 이 작업을 수행하는 방법은 궁금합니다.메쉬를 반으로 자름 - DirectX
선택한 정면 또는 정점을 0으로 설정하면 정점 버퍼를 잠그고 작동하지 않습니다. 누군가에게이 솔루션이나 자습서가 있습니다. 내 프로그램에서이 기능을 정말로 원합니다!
건배
메쉬를 절반으로 자르거나 적어도 실시간으로 그 안에있는면을 삭제하려고합니다. 이 작업을 수행하는 방법은 궁금합니다.메쉬를 반으로 자름 - DirectX
선택한 정면 또는 정점을 0으로 설정하면 정점 버퍼를 잠그고 작동하지 않습니다. 누군가에게이 솔루션이나 자습서가 있습니다. 내 프로그램에서이 기능을 정말로 원합니다!
건배
아 - 그 중 하나는 쉽습니다. 메쉬를 수정할 필요가 없습니다. D3D는 이미 이것을 할 수 있습니다!
IDirect3DDevice9::SetClipPlane
을 통해 클립 평면을 설정 한 다음 D3DRS_CLIPPLANEENABLE
렌더 스테이트를 통해 해당 평면을 활성화하십시오. 당신이 원하는 경우도 .. 동시에 여러 클립 비행기를 설정할 수 있습니다 여기에
그리고 당신은 당신을 "D3D의 SetClipPlane"에 대한 구글 검색을 수행하는 경우 많은 토론과 예제 코드를 사용하는 방법을 찾을 수 있습니다.
메쉬에서 삼각형을 동적으로 삭제해야하는 경우 제일/가장 빠른 방법은 색인 된 삼각형을 사용하는 것입니다. 인덱스 버퍼를 만들 때 'D3DUSAGE_DYNAMIC'플래그를 사용하십시오. 삼각형을 삭제하려면 'D3DLOCK_DISCARD'플래그로 잠급니다. 삭제하고자하는 삼각형을 남기지 않고 완전히 새로운 인덱스 목록을 버퍼에 씁니다.
인덱스 버퍼는 정점 버퍼보다 훨씬 작으므로 인덱스 만 다시 업로드하면 정점 버퍼만큼 시스템의 끌림이되지 않습니다. 그러나 인덱싱 된 삼각형 목록으로 변환하는 것이 큰 문제가된다면 대신 정점 버퍼를 사용하여 이러한 stame 연산을 수행하는 것이 가장 좋은 방법 일 것입니다.
꼭지점을 0으로 설정하면 효과가 없다고 말합니다. 어떤 방법으로 작동하지 않습니까?
삼각형의 모든 꼭지점의 위치를 (0.0, 0.0, 0.0)으로 설정하면 결과 삼각형의 크기는 0이며 그리지 않아야합니다. 그냥 0이 아닌 화면 밖의 위치로 설정할 수 있는지 확인하십시오.