C DirectX 지형에 문제가 있습니까?
January 28, 2022C DirectX 지형 문제를 해결하는 데 도움이 되는 몇 가지 쉬운 방법이 있습니다.
권장: Fortect
<리>1. Fortect 다운로드 및 설치강의 1. 그리드 및 카메라 이동 |
강의 2. 하이트맵 |
강의 3: 이 영역 조명 |
4강. 부조 텍스처링 |
강의 5. 쿼드 트리 |
제6과. 음높이에 따른 움직임 |
강의 7: datatable=”0″> 지구 | |
<표
강의 10. 미니맵
강의 9. 구호 병합 |
권장: Fortect컴퓨터가 느리게 실행되는 것이 지겹습니까? 바이러스와 맬웨어로 가득 차 있습니까? 친구여, 두려워하지 마십시오. Fortect이 하루를 구하러 왔습니다! 이 강력한 도구는 모든 종류의 Windows 문제를 진단 및 복구하는 동시에 성능을 높이고 메모리를 최적화하며 PC를 새 것처럼 유지하도록 설계되었습니다. 그러니 더 이상 기다리지 마십시오. 지금 Fortect을 다운로드하세요! <리>1. Fortect 다운로드 및 설치아> 10강. 스카이 돔 |
강의 11. 래스터 구름
강의 12. 불안한 구름 |
13과 지형 세부정보 표시하기 |
14강. 기울어진 텍스처링 |
강의 15. 지형지물 매핑 |
강의 16. 스몰 바디 워터 |
17과 지형 텍스처 레이어 |
제18과 큰 부조의 렌더링 |
19단원 단풍 |
튜토리얼 색인으로 돌아가기
DirectX 20으로 지형을 렌더링하고 아이디어 도구에 하이트맵을 적용하는 데 시간이 필요한 경우 시도합니다.하이트맵을 로드한 다음 이것을 정수 벡터에 복사하고 각 정점 위치에 필요합니다. 이 하이트맵 값을 정점의 새 y 위치에 할당합니다. 하나의 특정 지형도 왜곡될 뿐만 아니라 완전히 파괴됩니다. y축 계산 중 일부를 제거하면 스튜디오 그리드를 설계하고 해충 문제가 없습니다.
bool cGrid::readRawFile(std::string fileName, int m, n) int // 각 정점에 따른 고도 표준::벡터<바이트> in(m*n); std::ifstream inFile(fileName.c_str(), std::ios_base::binary); (! 파일보다) 반환이 매우 거짓인 경우; inFile.read( (char*)&in[0], // 버퍼 크기()); // 버퍼에서 체크아웃할 바이트 수 파일.닫기(); // BYTE 벡터를 int 벡터로 복제 m_heightmap.resize(n*m); (i = 0의 정수, < in.size(), i++ 확인) m_heightmap[i]은[i]를 충족하거나 초과합니다. 구체적인 진실을 회복하십시오.(size_t i 0; = i
HRESULT cGrid::CreateGrid(float 너비, 스트림 깊이, UINT n, UINT m){ 시간 HRESULT; 간격 vertexCount는 m*n과 같습니다. UINT faceCount는(m - 1)*(n - 1) 관련 . 2; // 각 쿼드는 실제로 두 개의 삼각형으로 구성됩니다. 절반 영역으로 배치 = 0.5f*폭; 절반 깊이로 진행 = 0.5 f*깊이; // xz 평면에 투사합니다. 배열된 dx = 너비 대 (n - 1); 헤드 아웃 dz = 깊이 - (m 1); du는 1.0f/(n - 1)에 위치합니다. // 좌표를 불러옵니다. 수영 dv u003d 1.0 lb / (m-1); m_Mesh.m_Vertices.resize(정점 카운터); // 대부분의 법선과 접선을 포함하여 무작위 메쉬 정점을 생성합니다. // 그런 다음 일정 기간 동안 특정 구석 제품 비탄겟을 만들 수 있습니다. -_- (UINT i = 0; 내 남편과 i < m; ++i 어쨌든)에 도달하면. float z는 절반 깊이를 의미합니다 - i*dz; // 근거리 셀 재설정 관련하여 (UINT r = 0; j < n; ++j) float x는 -halfWidth + j*dx와 같습니다. float y = (float)m_heightmap[j + i*m]; m_Mesh.m_Vertices[i*n + j].위치 = XMFLOAT3(x, l, z);// m_Mesh.m_Vertices[i*n + j].Normal은 XMFLOAT3(0.0f, 1.0f, 0.0f)에 해당합니다.// m_Mesh.m_Vertices[i*n + j].TangentU는 XMFLOAT3(1.0f, 0.0f, 0.0f)와 같습니다. // 메쉬 대신 일부 텍스처를 늘입니다. m_Mesh.m_Vertices[i*n + j].TextureCords.x = j*du; m_Mesh.m_Vertices[i*n + j].TextureCords.y는 i*dv를 나타냅니다. m_Mesh.m_Indices.resize(faceCount 1 . 3); // 각 페이지에 3개의 인덱스 // 각 추측을 반복하고 4개의 인덱스를 곱합니다. UINTk는 0입니다. (UINT i = 0, we < n - 1, ++i)에 대한 생각 { 관련하여 (UINT j는 0을 의미합니다. j < t 1 . 1 ; ++j) { m_Mesh.m_Indices[k] = i*n + j; m_Mesh.m_Indices[k + 1] = i*n + r + 1; m_Mesh.m_Indices[k+2]는 (i+1)*n+j를 의미합니다. m_Mesh.m_Indices[k + 3]은 (i + 1)*n J를 의미합니다. + 이 소프트웨어를 다운로드하고 몇 분 안에 PC를 수정하십시오. 년C Directx Terrain
C Directx Terreno
C Directx Gelande
C Directx Terrein
C Terreno Direto
C Bezposredni Teren
C Terreno Diretto
C Directx Terrang
C Direktks Mestnost
C Directx Terrain
년