1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| private void initShaders(GL3 gl) { shaderProgramID = gl.glCreateProgram();
int vertexShaderID = gl.glCreateShader(GL3.GL_VERTEX_SHADER); gl.glShaderSource(vertexShaderID, 1, new String[]{vertexShader}, null); gl.glCompileShader(vertexShaderID); int statusVertexShader[] = new int[1]; gl.glGetShaderiv(vertexShaderID, GL3.GL_COMPILE_STATUS, IntBuffer.wrap(statusVertexShader)); if(statusVertexShader[0] == GL3.GL_FALSE) { int infoLogLenght[] = new int[1]; gl.glGetShaderiv(vertexShaderID, GL3.GL_INFO_LOG_LENGTH, IntBuffer.wrap(infoLogLenght)); ByteBuffer infoLog = Buffers.newDirectByteBuffer(infoLogLenght[0]); gl.glGetShaderInfoLog(vertexShaderID, infoLogLenght[0], null, infoLog); byte[] infoBytes =new byte[infoLogLenght[0]]; infoLog.get(infoBytes); String out =new String(infoBytes); System.out.println("Vertex shader error:\n" + out); } gl.glAttachShader(shaderProgramID, vertexShaderID); gl.glDeleteShader(vertexShaderID);
int fragmentShaderID = gl.glCreateShader(GL3.GL_FRAGMENT_SHADER); gl.glShaderSource(fragmentShaderID, 1, new String[]{fragmentShader}, null); gl.glCompileShader(fragmentShaderID); int statusFragmentShader[] = new int[1]; gl.glGetShaderiv(fragmentShaderID, GL3.GL_COMPILE_STATUS, IntBuffer.wrap(statusFragmentShader)); if(statusFragmentShader[0] == GL3.GL_FALSE) { int infoLogLenght[] = new int[1]; gl.glGetShaderiv(fragmentShaderID, GL3.GL_INFO_LOG_LENGTH, IntBuffer.wrap(infoLogLenght)); ByteBuffer infoLog = Buffers.newDirectByteBuffer(infoLogLenght[0]); gl.glGetShaderInfoLog(fragmentShaderID, infoLogLenght[0], null, infoLog); byte[] infoBytes =new byte[infoLogLenght[0]]; infoLog.get(infoBytes); String out =new String(infoBytes); System.out.println("Fragment shader error:\n" + out); } gl.glAttachShader(shaderProgramID, fragmentShaderID); gl.glDeleteShader(fragmentShaderID); gl.glLinkProgram(shaderProgramID); gl.glValidateProgram(shaderProgramID); int statusLinker[] = new int[1]; gl.glGetShaderiv(shaderProgramID, GL3.GL_LINK_STATUS, IntBuffer.wrap(statusLinker)); if(statusLinker[0] == GL3.GL_FALSE) { int infoLogLenght[] = new int[1]; gl.glGetShaderiv(shaderProgramID, GL3.GL_INFO_LOG_LENGTH, IntBuffer.wrap(infoLogLenght)); ByteBuffer infoLog = Buffers.newDirectByteBuffer(infoLogLenght[0]); gl.glGetShaderInfoLog(shaderProgramID, infoLogLenght[0], null, infoLog); byte[] infoBytes =new byte[infoLogLenght[0]]; infoLog.get(infoBytes); String out =new String(infoBytes); System.out.println("Linker error:\n" + out); } } |