List of usage examples for com.google.gwt.corp.webgl.client WebGL GL_LINK_STATUS
int GL_LINK_STATUS
To view the source code for com.google.gwt.corp.webgl.client WebGL GL_LINK_STATUS.
Click Source Link
From source file:jake2.gwt.client.WebGLAdapter.java
License:Open Source License
private void initShader() { String vertexShaderSource = "attribute vec4 a_position;\n" + "attribute vec4 a_color;\n" + "attribute vec2 a_texCoord0; \n" + "attribute vec2 a_texCoord1; \n" + "uniform mat4 u_mvpMatrix; \n" + "varying vec4 v_color; \n" + "varying vec2 v_texCoord0; \n" + "varying vec2 v_texCoord1; \n" + "void main() {\n" + " gl_Position = u_mvpMatrix * a_position;\n" + " v_color = a_color; \n" + " v_texCoord0 = a_texCoord0; \n" + " v_texCoord1 = a_texCoord1; \n" + "}\n"; String fragmentShaderSource = "uniform sampler2D s_texture0; \n" + "uniform sampler2D s_texture1; \n" + "uniform int s_texEnv0; \n" + "uniform int s_texEnv1; \n" + "uniform int u_enable_texture_0; \n" + "uniform int u_enable_texture_1; \n" + "varying vec4 v_color; \n" + "varying vec2 v_texCoord0; \n" + "varying vec2 v_texCoord1;" + "vec4 finalColor; \n" + "void main() { \n" + "finalColor = v_color;" + " if (u_enable_texture_0 == 1) { \n" + " vec4 texel = texture2D(s_texture0, v_texCoord0); \n" + " if(s_texEnv0 == 1) { " + " finalColor = finalColor * texel;" + " } else if (s_texEnv0 == 2) {" + " finalColor = vec4(texel.r, texel.g, texel.b, finalColor.a);" + " } else {" + " finalColor = texel;" + " }" + "}" + " if (u_enable_texture_1 == 1) { \n" + " vec4 texel = texture2D(s_texture1, v_texCoord1); \n" + " if(s_texEnv1 == 1) { " + " finalColor = finalColor * texel;" + " } else if (s_texEnv1 == 2) {" + " finalColor = vec4(texel.r, texel.g, texel.b, finalColor.a);" + " } else {" + " finalColor = texel;" + " }" + " } \n" + // simple alpha check " if (finalColor.a == 0.0) {\n" + " discard;\n" + " }\n" + " gl_FragColor = finalColor; \n" + "}\n"; // }//from ww w . j a v a 2 s .c om // create our shaders WebGL.Shader vertexShader = loadShader(WebGL.GL_VERTEX_SHADER, vertexShaderSource); WebGL.Shader fragmentShader = loadShader(WebGL.GL_FRAGMENT_SHADER, fragmentShaderSource); if (vertexShader == null || fragmentShader == null) { log("Shader error"); throw new RuntimeException("shader error"); } // Create the program object WebGL.Program programObject = gl.glCreateProgram(); if (programObject == null || gl.glGetError() != WebGL.GL_NO_ERROR) { log("Program errror"); throw new RuntimeException("program error"); } // Attach our two shaders to the program gl.glAttachShader(programObject, vertexShader); gl.glAttachShader(programObject, fragmentShader); // Bind "vPosition" to attribute 0 gl.glBindAttribLocation(programObject, GLAdapter.ARRAY_POSITION, "a_position"); gl.glBindAttribLocation(programObject, GLAdapter.ARRAY_COLOR, "a_color"); gl.glBindAttribLocation(programObject, GLAdapter.ARRAY_TEXCOORD_0, "a_texCoord0"); gl.glBindAttribLocation(programObject, GLAdapter.ARRAY_TEXCOORD_1, "a_texCoord1"); // Link the program gl.glLinkProgram(programObject); //TODO(haustein) get position, color from the linker, too uMvpMatrix = gl.glGetUniformLocation(programObject, "u_mvpMatrix"); uSampler0 = gl.glGetUniformLocation(programObject, "s_texture0"); uSampler1 = gl.glGetUniformLocation(programObject, "s_texture1"); uTexEnv0 = gl.glGetUniformLocation(programObject, "s_texEnv0"); uTexEnv1 = gl.glGetUniformLocation(programObject, "s_texEnv1"); uEnableTexture0 = gl.glGetUniformLocation(programObject, "u_enable_texture_0"); uEnableTexture1 = gl.glGetUniformLocation(programObject, "u_enable_texture_1"); // // Check the link status boolean linked = gl.glGetProgramParameterb(programObject, WebGL.GL_LINK_STATUS); if (!linked) { throw new RuntimeException("linker Error: " + gl.glGetProgramInfoLog(programObject)); } gl.glUseProgram(programObject); gl.glUniform1i(uSampler0, 0); gl.glUniform1i(uSampler1, 1); gl.glActiveTexture(GL_TEXTURE0); }