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

Reply via email to