Sounds like your vertex shader *asset* or fragment shader asset has an error in it.
On Thursday, November 1, 2012 4:12:44 PM UTC-5, Braindrool wrote: > > Title pretty much says it all. This would be so much easier if I were to > just use a single class for this. But I have been trying to take advantage > of Java's class system. To the point I get the "Error creating shader". > > package com.braindrool.game; >> >> >>> import android.opengl.GLES20; >> >> >>> public class Shader { >> >> >>> public Shader(String vertexShader, String fragmentShader) { >> >> int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER); >> >> if (vertexShaderHandle != 0) { >> >> GLES20.glShaderSource(vertexShaderHandle, vertexShader); >> >> GLES20.glCompileShader(vertexShaderHandle); >> >> final int[] vertexCompileStatus = new int[1]; >> >> GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS, >> >> vertexCompileStatus, 0); >> >> if (vertexCompileStatus[0] == 0) { >> >> GLES20.glDeleteShader(vertexShaderHandle); >> >> System.err.println("Deleting vertex shader"); >> >> vertexShaderHandle = 0; >> >> } >> >> } >> >> if (vertexShaderHandle == 0) { >> >> } >> >> int fragmentShaderHandle = GLES20 >> >> .glCreateShader(GLES20.GL_FRAGMENT_SHADER); >> >> >>> if (fragmentShaderHandle != 0) { >> >> System.out.println("Fragmentshaderhandle success"); >> >> GLES20.glShaderSource(fragmentShaderHandle, fragmentShader); >> >> GLES20.glCompileShader(fragmentShaderHandle); >> >> final int[] fragmentCompileStatus = new int[1]; >> >> GLES20.glGetShaderiv(fragmentShaderHandle, >> >> GLES20.GL_COMPILE_STATUS, fragmentCompileStatus, 0); >> >> if (fragmentCompileStatus[0] == 0) { >> >> GLES20.glDeleteShader(fragmentShaderHandle); >> >> fragmentShaderHandle = 0; >> >> } >> >> } >> >> >>> if (fragmentShaderHandle == 0) { >> >> System.err.println("Error creating fragment shader."); >> >> } >> >> >>> System.out >> >> .println(linkShaders(vertexShaderHandle, fragmentShaderHandle)); >> >> } >> >> >>> private int linkShaders(int vertexHandle, int fragmentHandle) { >> >> int programHandle = GLES20.glCreateProgram(); >> >> >>> if (programHandle != 0) { >> >> GLES20.glAttachShader(programHandle, vertexHandle); >> >> GLES20.glAttachShader(programHandle, fragmentHandle); >> >> GLES20.glBindAttribLocation(programHandle, 0, "a_Position"); >> >> GLES20.glBindAttribLocation(programHandle, 1, "a_Color"); >> >> GLES20.glLinkProgram(programHandle); >> >> final int[] linkStatus = new int[1]; >> >> GLES20.glGetProgramiv(programHandle, GLES20.GL_LINK_STATUS, >> >> linkStatus, 0); >> >> if (linkStatus[0] == 0) { >> >> GLES20.glDeleteProgram(programHandle); >> >> programHandle = 0; >> >> } >> >> } >> >> >>> if (programHandle == 0) { >> >> System.err.println("Error creating program."); >> >> } >> >> return programHandle; >> >> } >> >> } >> >> >> > And the call to that function / class: > > private void finishLoading() { >> >> >>> mGLView.queueEvent(new Runnable() { >> >> public void run() { >> >> shader = new Shader(asset("shaders/vertex/default"), >> >> asset("shaders/fragment/default")); >> >> } >> >> }); >> >> > > Questions and help greatly appreciated! > > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en