Still no success with glGetShaderInfoLog. Even with the work-around you sent.
11-04 12:16:54.626: I/System.out(1631): Finished loading: models/monkey.ply > > 11-04 12:16:54.626: I/System.out(1631): Finished loading: >> shaders/vertex/default > > 11-04 12:16:54.636: W/dalvikvm(1631): threadid=12: thread exiting with >> uncaught exception (group=0x409c01f8) > > 11-04 12:16:54.636: E/AndroidRuntime(1631): FATAL EXCEPTION: GLThread 119 > > 11-04 12:16:54.636: E/AndroidRuntime(1631): java.lang.RuntimeException: >> creating the shader didn't work > > 11-04 12:16:54.636: E/AndroidRuntime(1631): at >> com.braindrool.game.Shader.<init>(Shader.java:33) > > 11-04 12:16:54.636: E/AndroidRuntime(1631): at >> com.braindrool.game.Loading_Screen$1.run(Loading_Screen.java:212) > > 11-04 12:16:54.636: E/AndroidRuntime(1631): at >> android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1424) > > 11-04 12:16:54.636: E/AndroidRuntime(1631): at >> android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216) > > 11-04 12:16:54.676: I/System.out(1631): Finished loading > > > package com.braindrool.game; > > >> import java.nio.ByteBuffer; > > import java.nio.ByteOrder; > > import java.nio.IntBuffer; > > >> import android.opengl.GLES20; > > >> public class Shader { > > >> public Shader(String vertexShader, String fragmentShader) { > > int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER); > > // > > *ByteBuffer tmp = ByteBuffer.allocateDirect(4);* > > * tmp.order(ByteOrder.nativeOrder());* > > * IntBuffer intbuf = tmp.asIntBuffer();* > > * //* > > * GLES20.glShaderSource(vertexShaderHandle, vertexShader);* > > * GLES20.glCompileShader(vertexShaderHandle);* > > * final int[] vertexCompileStatus = new int[1];* > > * GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS,* > > * intbuf);* > > * >> * > > * if (intbuf.get(0) == 0) {* > > * GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_INFO_LOG_LENGTH,* > > * intbuf);* > > * int infoLogLength = intbuf.get(0);* > > * if (infoLogLength > 1) {* > > * String infoLog = GLES20.glGetShaderInfoLog(vertexShaderHandle);* > > * System.err.println("shader log:\n" + infoLog);* > > * }* > > * throw new RuntimeException("creating the shader didn't work");* > > * }* > > >> // > > if (vertexCompileStatus[0] == 0) { > > GLES20.glDeleteShader(vertexShaderHandle); > > System.err.println("Deleting vertex shader"); > > vertexShaderHandle = 0; > > } > > >> if (vertexShaderHandle == 0) { > > >> System.err.println("Error creating vertex shader"); > > } > > // //////// > > 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; > > } > > } > > > On Friday, November 2, 2012 6:57:55 PM UTC-5, RichardC wrote: > > You need to call: glGetShaderInfoLog to get the output from the shader > compiler if there is an error. > > HOWEVER it is bugged: > http://code.google.com/p/android/issues/detail?id=9953 > > The work-round is in comment 7 > > > On Friday, November 2, 2012 11:20:09 PM UTC, Kostya Vasilyev wrote: >> >> It's pretty weird to see the "\n"-s make it into the log as is... >> >> Do your shader files perhaps contain those two symbols (the backslash and >> the "n") at the end of each line? Are they really supposed to be there if >> they do? >> > -- 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