簡體   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