- function InitOpenGL: Boolean;
- begin
- if (GLHandle = INVALID_MODULEHANDLE) or (GLUHandle = INVALID_MODULEHANDLE) then
- Result := InitOpenGLFromLibrary(SDefaultGLLibrary, SDefaultGLULibrary)
- else
- Result := True;
- end;
- //----------------------------------------------------------------------------------------------------------------------
- function InitOpenGLFromLibrary(GLName, GLUName: string): Boolean;
- begin
- Result := False;
- CloseOpenGL;
- {$IFDEF Win32}
- GLHandle := LoadLibrary(PChar(GLName));
- GLUHandle := LoadLibrary(PChar(GLUName));
- {$ENDIF}
- {$IFDEF LINUX}
- GLHandle := dlopen(PChar(GLName), RTLD_GLOBAL or RTLD_LAZY);
- GLUHandle := dlopen(PChar(GLUName), RTLD_GLOBAL or RTLD_LAZY);
- {$ENDIF}
- if (GLHandle <> INVALID_MODULEHANDLE) and (GLUHandle <> INVALID_MODULEHANDLE) then
- begin
- LoadProcAddresses;
- Result := True;
- end
- else
- begin
- if GLHandle <> INVALID_MODULEHANDLE then
- FreeLibrary(Cardinal(GLHandle));
- if GLUHandle <> INVALID_MODULEHANDLE then
- FreeLibrary(Cardinal(GLUHandle));
- end;
- end;