2014-05-19 3 views
3

모든 프레임마다 새로운 쉐이더 프로그램을 만들고 모양을 채색하는 데 사용하고 있습니다. 이로 인해 상당량의 지연이 발생합니다. GLES20에서 오브젝트의 색상을보다 효율적으로 설정할 수있는 방법이 있는지 궁금합니다. 다른 버전에는 setColor 함수가 있지만이 버전의 OpenGL ES에는 존재하지 않는다고 말할 수 있습니다.Android OpenGL ES 2.0 실시간 색상 변경

답변

2

가장 쉬운 방법은 균일 변수를 사용하는 것입니다. 조각 쉐이더의 선언 부분에 다음과 같은 코드가 있습니다.

uniform vec4 objColor; 

그런 다음이 값을 사용하여 개체 색을 설정합니다.

objColorLoc = GLES20.glGetUniformLocation(progId, "objColor"); 

: 자바에서

, 당신은, 당신의 쉐이더 프로그램을 연결 한 후 다음 한 코드 progId 방금 ​​연결 프로그램의 ID 인 상태 (난 당신이 안드로이드 태그가 이후는 자바의 그림) 그리기 전화를 걸기 전에 다음과 같이 색상을 변경하십시오.

GLES20.glUniform4f(objColorLoc, colR, colG, colB, 1.0f);