<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote">I haven't tried your package yet since I really don't want to boot into Windows, but I looked at your source code in the git repository.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Off the top of my head here are just a  few questions or suggestions you need to implement to make it useful:</div><div class="gmail_quote"><br></div><div class="gmail_quote">1) I don't see any code to enumerate the supported screen resolutions</div><div class="gmail_quote">2) I don't see any code to toggle a window exclusive mode</div><div class="gmail_quote">3) I don't see any code to abstract loading OpenGL or extensions</div><div class="gmail_quote">  3a) You should provide a function to return either the OpenGL library name based on the Context requested, or a handle to the library so that GetProcAddress can be called</div><div class="gmail_quote">  3b) You should provide a platform independent function to load extensions by name</div><div class="gmail_quote">4) Your get time function is incredibly inaccurate. You should be using QueryPerformanceCounter on Windows and clock_gettime on Linux and Mac.</div><div class="gmail_quote"><br></div><div class="gmail_quote">function GetTime should look something like this:</div><div class="gmail_quote"><br></div><div class="gmail_quote"><div class="gmail_quote">var</div><div class="gmail_quote">  BaseTime: Double = 0;</div><div class="gmail_quote"><br></div><div class="gmail_quote">{$ifdef windows}</div><div class="gmail_quote">function GetTime: Double;</div><div class="gmail_quote">var</div><div class="gmail_quote">  Resolution, Counter: Int64;</div><div class="gmail_quote">begin</div><div class="gmail_quote">  QueryPerformanceFrequency(Value);</div><div class="gmail_quote">  Resolution := Resolution div 1000;</div><div class="gmail_quote">  QueryPerformanceCounter(Counter);</div><div class="gmail_quote">  Result := Counter / Resolution / 1000;</div><div class="gmail_quote">  if BaseTime = 0 then</div><div class="gmail_quote">    BaseTime := Result;</div><div class="gmail_quote">  Result := Result - BaseTime;    </div><div class="gmail_quote">end;</div></div><div class="gmail_quote">{$else}</div><div class="gmail_quote"><div class="gmail_quote">function GetTime: Double;</div><div class="gmail_quote">const</div><div class="gmail_quote">  CLOCK_MONOTONIC = 1;</div><div class="gmail_quote">  Nanosecond = 1 / 1000000000;</div><div class="gmail_quote">var</div><div class="gmail_quote">  T: TTimeSpec;</div><div class="gmail_quote">begin</div><div class="gmail_quote">  clock_gettime(CLOCK_MONOTONIC, @T);</div><div class="gmail_quote">  Result := T.tv_sec + T.tv_nsec * Nanosecond;</div><div class="gmail_quote">  if BaseTime = 0 then</div><div class="gmail_quote">    BaseTime := Result;</div><div class="gmail_quote">  Result := Result - BaseTime;    </div><div class="gmail_quote">end;</div><div>{$endif}<br></div></div></div></div></div></div>