공개 GL의 ES2 : 나는 간단한 조각 쉐이더에게 다음 한 조각 쉐이더 최적화
precision lowp float;
uniform sampler2D u_texture_image;
uniform sampler2D u_texture_mask;
uniform lowp float u_blink;
varying lowp vec2 v_texCoords_image;
varying lowp vec2 v_texCoords_mask;
varying lowp float v_shadow;
void main() {
lowp vec4 color= vec4(texture2D(u_texture_image, v_texCoords_image));
lowp vec4 mask_color= vec4(texture2D(u_texture_mask, v_texCoords_mask));
//masking image
color = vec4(color.xyz,mask_color.a);
//blink
color =mix(color,vec4(1.0,1.0,1.0,mask_color.a),u_blink);
//check if its a shadow
color=mix(color, mask_color*0.3, v_shadow);
gl_FragColor = color;
}
이 코드와 함께 4400 다각형을 그리고 초당 25 프레임을 (~ onDrawFrame 사이 40ms로 호출)이 아니므로 .This이 충분하지 얻을 전체 장면.
어떻게 든이 코드를 최적화 할 수 있습니까? 내 대상 fps는 30입니다.
또한 조각 쉐이더 코드에 대한 프로파일 링 도구가 있습니까?
ADD : 나는 조각 쉐이더를
private void drawPieces() {
//set my shader
piecesProgram.useProgram();
//set uniforms
piecesProgram.setUniforms(MVPMatrix, textureImageId, textureMaskId,new PointF(2f,2f),0f);
//load my vertcices with glVertexAttribPointer
piecesMesh.bindPieceData(piecesProgram,false);
//draw it with glDrawElements
piecesMesh.drawPieces(false);
piecesMesh.disableAttributes(piecesProgram);
}
를 작성했습니다 당신이 빨리 가고 싶어 코드에서 힙 메모리 (새 PointF (...))를 할당 할 수 없습니다보십시오. 모든 프로그래밍 언어, 모든 플랫폼, 모든 날로 이동합니다. – Andreas
조각 쉐이더 배수 성능인지 테스트하는 일반적인 방법은 2x2 뷰포트를 설정하는 것입니다. 그것을하고, 무슨 일이 일어나는지보고, 결과를 말하십시오. – Andreas