如何在OpenGL / GLES着色器中添加指令?

时间:2014-03-13 07:50:19

标签: opengl opengl-es

基本上我想创建一个包含顶点着色器和片段着色器的文件。

像这样。

    #ifdef VERTEX
    attribute vec4  a_pos; 
    attribute vec2   a_texCoords; 
    uniform mat4 combined;  
    varying vec2 v_texCoords; 
         void main(){ 
            v_texCoords =   a_texCoords; 
            gl_Position =  combined *   a_pos; 
        }
    #endif

    #ifdef FRAGMENT
     varying vec2 v_texCoords; 
     uniform sampler2D u_texture;
    void main() {
        gl_FragColor = texture2D(u_texture, v_texCoords);
        //gl_FragColor = vec4(1,0,0,1);
    }
    #endif

但如何在编译着色器时传递指令,如c / c ++中的make_file?

1 个答案:

答案 0 :(得分:2)

在将代码字符串作为顶点着色器源代码使用时,我将#define VERTEX\n添加到代码字符串的开头,将#define FRAGMENT\n用作片段着色器源代码时<{1}}

像这样: -

void compileShader(int TYPE, String source){
     switch(TYPE){
     case GL20.GL_VERTEX_SHADER:
            source = "#define VERTEX \n" + source;
     case GL20.GL_FRAGMENT_SHADER:
            source = "#define FRAGMENT \n" + source;
     }
     //then compile source
}