Есть ли способ перезаписать или очистить местоположение атрибута в OpenGL? Например (я использую lwjgl) я делаю что-то вроде этого:
public void render(int vaoID, int vertexCount, int shaderProgramID){
GL30.glBindVertexArray(vaoID);
GL20.glBindAttribLocation(shaderProgramID, 0, "position");
GL20.glBindAttribLocation(shaderProgramID, 1, "normal");
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexCount);
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL30.glBindVertexArray(0);
}
и после этого я хочу запустить следующий код с тем же ShaderProgramID
public void render(int vaoID, int vertexCount, int shaderProgramID){
GL30.glBindVertexArray(vaoID);
//this previously was position
GL20.glBindAttribLocation(shaderProgramID, 0, "normal");
//and this was the normal
GL20.glBindAttribLocation(shaderProgramID, 1, "position");
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexCount);
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL30.glBindVertexArray(0);
}
Как видите, я изменил следующий код:
GL20.glBindAttribLocation(shaderProgramID, 0, "position");
GL20.glBindAttribLocation(shaderProgramID, 1, "normal");
к этому:
GL20.glBindAttribLocation(shaderProgramID, 0, "normal");
GL20.glBindAttribLocation(shaderProgramID, 1, "position");
Но когда я запускаю оба кода,
GL20.glGetAttribLocation(programID, "position");
возвращает 0 вместо 1
Есть ли способ очистить ранее привязанные местоположения, чтобы я мог привязать новые?