mirror of https://github.com/bjornbytes/lovr.git
Shader reference counting;
This commit is contained in:
parent
0f0c301525
commit
c41204f876
|
@ -24,10 +24,13 @@ void lovrGraphicsInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void lovrGraphicsDestroy() {
|
void lovrGraphicsDestroy() {
|
||||||
|
lovrGraphicsSetShader(NULL);
|
||||||
|
glUseProgram(0);
|
||||||
|
lovrRelease(&state.defaultShader->ref);
|
||||||
vec_deinit(&state.transforms);
|
vec_deinit(&state.transforms);
|
||||||
mat4_deinit(state.projection);
|
mat4_deinit(state.projection);
|
||||||
lovrShaderDestroy(&state.defaultShader->ref);
|
lovrRelease(&state.defaultShader->ref);
|
||||||
lovrShaderDestroy(&state.skyboxShader->ref);
|
lovrRelease(&state.skyboxShader->ref);
|
||||||
glDeleteBuffers(1, &state.shapeBuffer);
|
glDeleteBuffers(1, &state.shapeBuffer);
|
||||||
glDeleteBuffers(1, &state.shapeIndexBuffer);
|
glDeleteBuffers(1, &state.shapeIndexBuffer);
|
||||||
glDeleteVertexArrays(1, &state.shapeArray);
|
glDeleteVertexArrays(1, &state.shapeArray);
|
||||||
|
@ -157,7 +160,15 @@ void lovrGraphicsSetShader(Shader* shader) {
|
||||||
shader = state.defaultShader;
|
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) {
|
void lovrGraphicsSetProjection(float near, float far, float fov) {
|
||||||
|
|
Loading…
Reference in New Issue