繁体   English   中英

适用于Android的OpenGL ES 2.0中的着色器

[英]Shaders in OpenGL ES 2.0 for Android

我想做一些AR东西。 我完成了一些教程的一些步骤,例如

我正在使用OpenGL ES 2.0。 特别是在第一个教程中,他们为片段和顶点着色器实现了GLSL着色器代码。 然后他们编译它。

我需要为要使用OpenGL绘制的每个原始对象实现此类代码吗? 还是可以重用着色器代码来绘制不同类型的形状以及相同类型的不同实例?

此外:我只能重用着色器代码还是可以重用已编译的着色器程序?

对几种几何形状重复使用相同的着色器是提高性能的一种常用方法,因为它们将被视为一次绘制调用。 如果设置了着色器(glUseProgram),它将可用于任意数量的后续调用。

这些教程非常基础,您应该将着色器代码抽象为一种更加面向对象的方法。 例如:

public class Material{
   String mVertexShaderCode;
   String mFragmentShaderCode;
   int mProgram;

   void initialize(){
      // do loadShader and attachShader here
   }

   void draw(){
     GLES20.glUseProgram(mProgram);
     // do more draw stuff
   }
}

也许这使您更容易了解如何使用和重用着色器代码。

回答后续问题; 是的,您可以重用两者。 限制是,如果您还重复使用已编译的着色器,则不能使用不同的着色器特定属性。 当您开始使用它们时,这些限制将变得显而易见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM