지난 며칠 동안 일부 사용자는 이미 directx 삼각형 줄무늬 오류가 발생했습니다. 이 문제는 여러 요인으로 인해 발생합니다. 아래에서 그 중 일부에 집중하겠습니다.
승인됨: Fortect
<울><리>
<리>
삼각형 스트립은 아마도 함께 연결된 삼각형 세트일 것입니다. 모든 삼각형이 연결되어 있으므로 실제 응용 프로그램에서는 거의 모든 단일 단일 삼각형에 대해 세 개의 꼭짓점을 다시 지정할 필요가 없습니다. 이를 설명하려면 다음 삼각형 스트립을 가리키는 추가 유효 꼭짓점만 있으면 됩니다.
시스템은 정점 v1, v2 및 v3을 사용하여 다른 삼각형보다 먼저 사람을 그립니다. v2 및 v4, v3은 두 번째 삼각형을 그립니다. v3는 v4, v5와 결합하여 세 번째를 가져옵니다. 네 번째 그림을 그릴 때 v4, v6 및 v5; 등이 각각 있습니다. 두 번째 삼각형과 다음 삼각형 사이의 꼭짓점은 순서대로 정렬되어 있습니다. 이것은 모든 삼각형이 시계 방향으로 사용된다는 확신을 주기 위함입니다.
물체에 있는 대부분의 마분지 장면은 모든 삼각형 줄무늬로 구성됩니다. 과연 삼각 리본을 즐길 수 있습니다. 메모리와 처리 시간을 효율적으로 사용하기 위해 복잡한 개체를 특정 방식으로 정의합니다. 다음
코드는 이 나무 A 석탄 스트립을 얻기 위해 꼭짓점을 만드는 방법을 보여줍니다.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
CUSTOMVERTEX 구조체X, y, z 부동 소수점;;정점 CUSTOMVERTEX [] -5.0, -5.0, 0, 0, 0.0, 5.0, 0.0, 5.0, -5.0, 0.0, 10.0, 5.0, 0.0, 15.0, -5.0, 0.0, 20.0, 5.0, 0.0;
다음 코드 예제는 이 삼각형이 IDirect3DDevice9 :: DrawPrimitive 를 사용하여 검색하는 Direct3D에서 어떻게 렌더링되는지 알려줍니다.
<사전> <코드> //// d3dDevice가 유효하다고 가정합니다.// IDirect3DDevice9 인터페이스를 허용하는 포인터.// //d3dDevice-> DrawPrimitive (0, d3dpt_trianglestrip, 4);
연결되지 않은 삼각형을 허용하려면 최상의 삼각형 줄무늬를 사용하십시오. 지금 이것을 기록하려면 삼각형 식별 주위에 퇴화 삼각형(영역이 0인 삼각형이 있어야 함)을 지정합니다. 이것은 표시될 가능성이 없는 여러 삼각형 사이에 신뢰선을 만듭니다. 이전 예에서 받은 첫 번째 삼각형과 마지막 삼각형만 표시하려면 다음과 같이 정점 버퍼를 변경합니다.
<사전> <코드> CUSTOMVERTEX = 정점 [] -5.0, -5.0, 0. 0, 0.0, 5.0, 0.0, 5.0, -5.0, 1, 0, 5.0, -5.0, 0.0, 회전 // 삼각형 10.0, 5.0, 0.0, 퇴화 // 삼각형 10.0, 5.0, 0.0, 15.0, -5.0, 0.0, 20.0, 5.0, 0.0;
<울><리>
<리>
Direct3D 이상은 D3D_PRIMITIVE_TOPOLOGY 열거 유형의 결과로 표시되는 여러 기본 그룹(또는 토폴로지)을 지원합니다. 이러한 유형의 정점 스케치는 컨베이어에서 해석되고 표시됩니다.
<울>
기본 기본 유형
<울>
각 기본 유형의 실제 렌더링에 대해서는 이 섹션 아래의 회전 방향에 대한 다이어그램을 참조하십시오. 및 시작 정점 위치 .
입력 어셈블러 요소는 주 정점 인덱스 버퍼에서 데이터를 읽고 해당 데이터를 해당 사람 프리미티브로 연결한 다음 컨베이어 시각화 단계로 데이터를 보냅니다. ( ID3D11DeviceContext :: IASetPrimitiveTopology 메서드와 가장 관련이 있는 것을 사용하여 실제로 종종 인접 입력 어셈블리 수준
에 대한 기본 유형을 지정할 수 있습니다.
전체)
기본 유형 Direct3D 10 이상(주제 목록 제외)은 이웃이 있는 단순 유형과 이웃이 없는 기본 유형의 두 가지 버전으로 제공됩니다. Neighborhood Primitive는 주변 정점 중 일부를 포함하는 반면, Non-neighbor Primitive는 해당 대상 Primitive의 정점만 포함합니다. 예: 문자열 카탈로그 기본체(D3D_PRIMITIVE_TOPOLOGY_LINELIST 값으로 표시됨)에는 인접성을 포함할 일치하는 문자열 목록 기본체가 있습니다(D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ 값으로 표시됨).
인접 프리미티브는 지오메트리에 대한 추가 정보를 제공할 수 있으며 지오메트리 셰이더에서만 볼 수 있습니다. 인접성은 실루엣 감지, 다크 볼륨 돌출 등을 사용하는 지오메트리 셰이더에 유용합니다.
예를 들어, 1/4로 삼각형을 그릴 수 있습니다. 36개의 꼭짓점(Neighborsohm 포함)을 포함하는 삼각형 목록은 닫힌 프리미티브로 저렴한 휴식을 제공합니다. 인접 프리미티브(유형 스트라이프 제외)는 각각의 추가 정점이 인접 정점인 비인접 기본 등가물보다 정확히 2배 많은 정점을 포함합니다.
감기 방향 및 헤드 위치
다음 그림과 같이 메인 헤드 정점은 이전 정점의 첫 번째 비연속 정점으로 간주됩니다. 프리미티브 유형은 각각 다른 프리미티브에 사용할 수 있는 경우 여러 개의 고유한 카디널리티 정점을 가질 가능성이 가장 높습니다. 인접성이 있는 현실적인 삼각형 테이프의 경우 높은 정점은 0, 2, 4, 6 등입니다. 주변을 고려한 특정 선형 스트립의 경우 정점의 끝은 1, 아마도 3 등입니다. 반대로, 구식 경계에 접한 다른 하나는 정점이 거의 없습니다 …
다음 그림은 어셈블러의 키가 생성할 수 있는 모든 유형의 프리미티브에 대한 정점과 관련된 획득을 보여줍니다. 기호
위의 모든 그림은 아래 표에 설명되어 있습니다.
여러 밴드 생성
스트립을 잘라서 여러 개의 미백 스트립을 만들 수 있습니다. HLSL RestartStrip 수행을 사용하거나 인덱스 스트림에 비정상적인 인덱스 값을 쉽게 삽입하여 명시적으로 호출하여 노치를 줄일 수 있습니다. 값은 -1이며 아마도 32비트 인덱스의 경우 0xffffffff이거나 16비트 인덱스의 경우 0xffff일 것입니다. 인덱스 -1은 일부 테이프 전류의 이상적인 “종료” 또는 “재시작”을 나타냅니다. 이전
원형 막대는 컴퓨터 그래픽 메모리를 보다 효율적으로 사용하기 위해 정점을 촉진하는 삼각형 메쉬의 연결된 삼각형과 관련된 시리즈입니다. 인덱스가 없는 삼각형 목록과 달리 더 효율적이지만 일반적으로 인덱스된 삼각형 목록보다 화학적이지 않거나 느립니다.
Triangle Fan은 저장 공간을 절약함과 동시에 처리 시간을 절약하는 원시적인 애니메이션 인포그래픽 이미지입니다. 그것은 공통 운하 정점을 공유하는 연결된 삼각형을 사용하는 정리를 설명합니다(일반적으로 삼각형을 형성하는 데 사용된 이전 두 정점과 다음 정점을 현재 연결하는 삼각형 스트립과 반대).
gl시작(GL_TRIANGLES); glColor3f(0.1, 0.2, 0, 3); glVertex3f(0, 0, 0); glVertex3f(1, 0, 0); glVertex3f(0, 1, 0); 글엔드(); 이것은 누군가에게 평평하고 조명이 없고 구조화되지 않은 그늘진 삼각형을 제공합니다. 또한 glBegin으로 반환하는 값을 극적으로 수정하여 삼각형, 사각형 및 다각형을 잡을 수도 있습니다.