首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >open gl es2:片段着色器优化

open gl es2:片段着色器优化
EN

Stack Overflow用户
提问于 2016-10-26 22:40:38
回答 1查看 58关注 0票数 0

我有以下简单的片段着色器

代码语言:javascript
复制
 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个多边形,得到了25fps( onDrawFrame调用间隔~40ms).This是不够的,因为这不是整个场景。

我能以某种方式优化这段代码吗?我的目标fps是30。

我还想知道有没有一些片段着色器代码的分析工具?

添加:如何调用片段着色器

代码语言:javascript
复制
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);

}
EN

回答 1

Stack Overflow用户

发布于 2016-10-26 23:05:08

该着色器看起来并不复杂。

您使用的是什么硬件?您是否在每次使用此着色器时都重新编译它?如何调用此着色器?

苹果公司写了一篇关于GLSL的最好的https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/BestPracticesforShaders/BestPracticesforShaders.html的文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40265247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档