Re: JOGL Shader VM Crash
Posted by Itun on Mar 20, 2011; 11:15pm
URL: https://forum.jogamp.org/JOGL-Shader-VM-Crash-tp2638696p2707654.html
Are you sure that your shader is running right?
Try to catch shader link and compile errors.
IntBuffer params = Buffers.newDirectIntBuffer(1);
gl.glGetObjectParameterivARB(vertexShaderObject, GL2.GL_COMPILE_STATUS, params);
IntBuffer fragmentShaderObjectParams = Buffers.newDirectIntBuffer(1);
gl.glGetObjectParameterivARB(fragmentShaderObject, GL2.GL_COMPILE_STATUS, fragmentShaderObjectParams);
if (params.get(0) == 0 || fragmentShaderObjectParams.get(0) == 0) {
ByteBuffer LogBuffer = ByteBuffer.allocate(10000);
if (params.get(0) == 0 && fragmentShaderObjectParams.get(0) == 0) {
gl.glGetShaderInfoLog(vertexShaderObject, 10000, shaderLength, LogBuffer);
} else if (params.get(0) == 0) {
gl.glGetShaderInfoLog(vertexShaderObject, 10000, shaderLength, LogBuffer);
} else if (fragmentShaderObjectParams.get(0) == 0) {
gl.glGetShaderInfoLog(vertexShaderObject, 10000, shaderLength, LogBuffer);
}
gl.glGetShaderInfoLog(vertexShaderObject, 10000, shaderLength, LogBuffer);
String Log;
try {
Log = new String(LogBuffer.array(), "UTF-8");
} catch (UnsupportedEncodingException ex) {
Log = new String(LogBuffer.array());
Logger.getLogger(Shader.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(Log);
} else {
ProgramObject = gl.glCreateProgram();
gl.glAttachShader(ProgramObject, vertexShaderObject);
gl.glAttachShader(ProgramObject, fragmentShaderObject);
gl.glLinkProgram(ProgramObject);
IntBuffer linked = Buffers.newDirectIntBuffer(1);
gl.glGetProgramiv(ProgramObject, GL2.GL_LINK_STATUS, linked);
if (linked.get(0) == 0) {
ByteBuffer LogBuffer = ByteBuffer.allocate(10000);
gl.glGetShaderInfoLog(ProgramObject, 10000, shaderLength, LogBuffer);
String Log;
try {
Log = new String(LogBuffer.array(), "UTF-8");
} catch (UnsupportedEncodingException ex) {
Log = new String(LogBuffer.array());
Logger.getLogger(Shader.class.getName()).log(Level.SEVERE, null, ex);
}
ProgramObject = 0;
System.out.println(Log);
}
And Are you sure that it is shader?
Try to debug code to the string where VM crushes.