2013-06-19 7 views
0

두 개의 QGLShaderProgram을 사용하여 텍스처를 처리합니다. qt 하나의 텍스처에 대해 여러 개의 QGLShaderProgram

ShaderProgram1->bind(); // QGLShaderProgram 
ShaderProgram2->bind(); 

glBegin(GL_TRIANGLE_STRIP); 
... 
glEnd(); 

ShaderProgram1->release(); 
ShaderProgram2->release(); 

텍스처

다음과 Shaderprogram1 ShaderProgram2로 처리되어야한다. 하지만 ShaderProgram2-> bind()를 호출하면 ShaderProgram1-> release()가 자동으로 실행되고 하나의 셰이더 만 작동합니다. 두 셰이더를 모두 바인딩하는 방법은 무엇입니까?

+1

이유가 무엇입니까? A * 쉐이더 프로그램 *은 정의상 버텍스 + (tex) + (geo) + 조각 쉐이더의 완전한 세트입니다. "두 가지"쉐이더 프로그램을 사용한다는 것은 무엇을 의미합니까? – peppe

답변

2

그렇지 않습니다.

이들이 별개의 셰이더가 아니고 (그런 식으로도 작동하지 않는 경우가 아니라면) 각 렌더링 작업은 단일 셰이더 집합을 렌더링 된 프리미티브에 적용합니다. 즉, 하나의 버텍스 쉐이더와 그 뒤를 따르는 테셀레이션 쉐이더, 선택적으로 하나의 기하 쉐이더, 그리고 하나의 프래그먼트 쉐이더를 의미합니다.

셰이더를 데이지 체인으로 연결하려면 내의 내에서 셰이더 자체를 사용해야합니다.

관련 문제