2012-01-11 5 views
0

렌더링 기능에서 iOS 용 OpenGL es 2.x에서 텍스처를 일시적으로 비활성화하려면 어떻게합니까? 색상 선택을 구현 중입니다.opengl es 텍스처 비활성화 iOS

나는 glkit을 사용하지 않습니다. 셰이더를 사용하고 있으므로 glDisable(GL_TEXTURE_2D)이 작동하지 않거나 작동하지 않습니다. glBindTexture(GL_TEXTURE_2D,0)

답변

3

달성하고자하는 것에 따라 다릅니다. 텍스처를 비활성화하면 렌더링에 어떤 영향을 미치겠습니까?

텍스처 샘플을 기반으로 조각의 색상을 계산하는 셰이더가 있다면 텍스처를 바인딩하지 않으면 텍스처 대신 사용할 수있는 것은 무엇입니까? 색깔?

나는 2 옵션을 참조하십시오

을 -

B를 (당신이 속성을로드하는 경우 또는 버텍스 컬러) 2 개 쉐이더, 하나 개의 지원 텍스처, 하나 개를 사용하여 고정 색상을 사용 - 하나의 쉐이더와 조종사를 사용 유니폼을 사용하여 (텍스처 또는 색상) 렌더링.

옵션 B는 훨씬 더 많은 성능을 제공합니다.

을 수행하는 방법에 대한 첫 번째 질문에 대한 편집 : 내가 B을 어떻게

if (Texture == 0) { 
    gl_FragColor = vec4(1.0,0.0,0.0,0.0); //red color 
} else{ 
    gl_FragColor = texture2D(Texture, TexCoordOut); 
} 
+0

? 'glUniform1i (glGetUniformLocation (programHandle, "텍스처"), 0);':; 내가 뭐하는 거지 기능을 렌더링 내을에서 '다음 'gl_FragColor = texture2D (텍스처, TexCoordOut) : 여기 내 쉐이더입니다 – amir

+0

간단한 해결책은 다음과 같습니다 : if (Texture == 0) { gl_FragColor = vec4 (1.0,0.0,0.0,0.0); // 붉은 색 } else { gl_FragColor = texture2D (텍스처, TexCoordOut); } –

+0

감사합니다. 훌륭한 작품입니다 – amir

관련 문제