diff --git a/src/polyworld/quadterrain.nim b/src/polyworld/quadterrain.nim index bb387aeb..651947f6 100644 --- a/src/polyworld/quadterrain.nim +++ b/src/polyworld/quadterrain.nim @@ -817,6 +817,11 @@ proc compileProgram(vertexSource, fragmentSource: string): GLuint = glAttachShader(result, vertexShader) glAttachShader(result, fragmentShader) glLinkProgram(result) + # The linked executable owns its code; release the compilation objects. + glDetachShader(result, vertexShader) + glDetachShader(result, fragmentShader) + glDeleteShader(vertexShader) + glDeleteShader(fragmentShader) var ok: GLint glGetProgramiv(result, GL_LINK_STATUS, ok.addr) if ok == 0: diff --git a/src/polyworld/shadows.nim b/src/polyworld/shadows.nim index 73e5fa66..0badaef2 100644 --- a/src/polyworld/shadows.nim +++ b/src/polyworld/shadows.nim @@ -129,6 +129,11 @@ proc compileDepthProgram(vertexSource, fragmentSource: string): GLuint = glAttachShader(result, vertexShader) glAttachShader(result, fragmentShader) glLinkProgram(result) + # The linked executable owns its code; release the compilation objects. + glDetachShader(result, vertexShader) + glDetachShader(result, fragmentShader) + glDeleteShader(vertexShader) + glDeleteShader(fragmentShader) var ok: GLint glGetProgramiv(result, GL_LINK_STATUS, ok.addr) if ok == 0: