제 질문은 모든 테셀레이션 컨트롤 쉐이더 호출은 OPENGL이 각 쉐이더를 여러 번 호출해야하는 이유와 동일한 결과를 만들어냅니다. 예 : My Tesellation Control Shader는 베 지어 표면의 제어점을 계산합니다. Vertex Shaders에서 더 일찍 합쳐진 세 개의 정점 배열을 사용합니다. Tesellation 제어 쉐이더가 gl_invocatinoID에 대한 저장, 같은 입력을 세 번 호출되도록테셀레이션 제어 쉐이더가 여러 번 호출되는 이유는 무엇입니까?
// attributes of the input CPs
in vec3 WorldPos_CS_in[];
내 패치 크기는 3, 그리고 그들 모두는 같은 다음과 같은 컨트롤 포인트 생성 :
struct OutputPatch
{
vec3 WorldPos_B030;
vec3 WorldPos_B021;
vec3 WorldPos_B012;
vec3 WorldPos_B003;
vec3 WorldPos_B102;
vec3 WorldPos_B201;
vec3 WorldPos_B300;
vec3 WorldPos_B210;
vec3 WorldPos_B120;
vec3 WorldPos_B111;
vec3 Normal[3];
vec2 TexCoord[3];
};
// attributes of the output CPs
out patch OutputPatch oPatch;
과 또한 도움이 tesellation에이 패치를 분할 OpenGL은 동일한 정보 좌표 : 모든 테스의 제어 쉐이더가 같은 일을 할 것이 분명하다
// Calculate the tessellation levels
gl_TessLevelOuter[0] = gTessellationLevel;
gl_TessLevelOuter[1] = gTessellationLevel;
gl_TessLevelOuter[2] = gTessellationLevel;
gl_TessLevelInner[0] = gTessellationLevel;
. 자원을 낭비합니까? 테셀레이션 컨트롤 셰이더를 각 패치마다 한 번 호출해야하는 이유는 무엇입니까?