基本上我想创建一个包含顶点着色器和片段着色器的文件。
像这样。 #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?
答案 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
}