Shader reference counting;

This commit is contained in:
bjorn 2016-11-19 14:06:41 -08:00
parent 0f0c301525
commit c41204f876
1 changed files with 14 additions and 3 deletions

View File

@ -24,10 +24,13 @@ void lovrGraphicsInit() {
}
void lovrGraphicsDestroy() {
lovrGraphicsSetShader(NULL);
glUseProgram(0);
lovrRelease(&state.defaultShader->ref);
vec_deinit(&state.transforms);
mat4_deinit(state.projection);
lovrShaderDestroy(&state.defaultShader->ref);
lovrShaderDestroy(&state.skyboxShader->ref);
lovrRelease(&state.defaultShader->ref);
lovrRelease(&state.skyboxShader->ref);
glDeleteBuffers(1, &state.shapeBuffer);
glDeleteBuffers(1, &state.shapeIndexBuffer);
glDeleteVertexArrays(1, &state.shapeArray);
@ -157,7 +160,15 @@ void lovrGraphicsSetShader(Shader* shader) {
shader = state.defaultShader;
}
state.activeShader = shader;
if (shader != state.activeShader) {
if (state.activeShader) {
lovrRelease(&state.activeShader->ref);
}
state.activeShader = shader;
lovrRetain(&state.activeShader->ref);
}
}
void lovrGraphicsSetProjection(float near, float far, float fov) {