/** * @param program * @param shader * @see com.jogamp.opengl.GL2ES2#glAttachShader(int, int) */ public void glAttachShader(int program, int shader) { try{delegate.glAttachShader(program, shader);} catch(GLException e){glException(e); throw e;} } /**
public GLProgram attachShader(GLShader shader) { gl.glAttachShader(programID, shader.getShaderID()); return this; }//end attachShader()
/** * Attaches the specified shaders to this program. * @param shaders shaders to attach */ public void attachShaders(List<Shader> shaders) { if(programHandle == 0) { throw new RuntimeException("Program not created!"); } if (shaders.isEmpty()) { throw new RuntimeException("No shaders provided. Cannot create program without shaders"); } this.shaders.addAll(shaders); for (Shader s : shaders) { gl.glAttachShader(this.programHandle, s.getGLHandle()); } }
@Override public void glAttachShader(int program, int shader) { GLContext.getCurrentGL().getGL3().glAttachShader(program, shader); }
private static int createProgram( final GL3 g, final int vs, final int fs, final IntBuffer status) { final int id = g.glCreateProgram(); if (id == 0) { throw new GLException("glCreateProgram failed"); } g.glAttachShader(id, vs); g.glAttachShader(id, fs); g.glLinkProgram(id); g.glGetProgramiv(id, GL2ES2.GL_LINK_STATUS, status); if (status.get(0) == GL.GL_FALSE) { final ByteBuffer buffer = Buffers.newDirectByteBuffer(8192); final IntBuffer buffer_length = Buffers.newDirectIntBuffer(1); g.glGetProgramInfoLog(id, 8192, buffer_length, buffer); final byte[] raw = new byte[buffer.remaining()]; buffer.get(raw); final String tt = new String(raw); throw new GLException("compile: program: " + tt); } return id; }
public GLProgram(final GLShader pVerteShader, final GLShader pFragmentShader) { super(); mVertexShader = pVerteShader; mFragmentShader = pFragmentShader; mShaders.put(GLShaderType.VertexShader, pVerteShader); mShaders.put(GLShaderType.FragmentShader, pFragmentShader); mGL = pVerteShader.getGL(); final int lVertexShaderId = mVertexShader.getId(); final int lFragmentShaderId = mFragmentShader.getId(); mProgramId = mGL.getGL3().glCreateProgram(); mGL.getGL3().glAttachShader(mProgramId, lVertexShaderId); mGL.getGL3().glAttachShader(mProgramId, lFragmentShaderId); mGL.getGL3().glLinkProgram(mProgramId); mGL.getGL3().glBindFragDataLocation(mProgramId, 0, "outColor"); }
gl.glAttachShader(glProgram, glVertexShader); gl.glDeleteShader(glVertexShader); gl.glAttachShader(glProgram, glFragmentShader); gl.glDeleteShader(glFragmentShader);
public GLProgram(final GL pGL, final HashMap<GLShaderType, GLShader> pipeline) { super(); mGL = pGL; mProgramId = mGL.getGL3().glCreateProgram(); mShaders = pipeline; for (final GLShader shader : pipeline.values()) { mGL.getGL3().glAttachShader(mProgramId, shader.getId()); } mGL.getGL3().glLinkProgram(mProgramId); }
public GLProgram(final GL pGL, final HashMap<GLShaderType, GLShader> pipeline, final HashMap<String, String> parameters) { super(); mGL = pGL; this.parameters = parameters; mProgramId = mGL.getGL3().glCreateProgram(); mShaders = pipeline; for (final GLShader shader : pipeline.values()) { mGL.getGL3().glAttachShader(mProgramId, shader.getId()); } mGL.getGL3().glLinkProgram(mProgramId); }
public void recompileProgram(final GL pGL) { final long start = System.nanoTime(); pGL.getGL3().glDeleteProgram(mProgramId); mProgramId = mGL.getGL3().glCreateProgram(); for (final GLShader shader : mShaders.values()) { shader.setParameters(parameters); shader.recompile(pGL); mGL.getGL3().glAttachShader(mProgramId, shader.getId()); } mGL.getGL3().glLinkProgram(mProgramId); final long diff = System.nanoTime() - start; stale = false; }