Zacznij od określenia, czego potrzebujesz w części „otoki” interfejsu API. Zasadniczo jest to bardzo, bardzo proste: potrzebujesz podstawowych zasobów (buforów, shaderów, tekstur, stanu potoku) i sposobu na wykorzystanie tych zasobów do zbudowania ramki przez przesłanie niektórych wywołań losowania.
Staraj się trzymać logikę wysokiego poziomu z dala od opakowania API. Jeśli zaimplementujesz sprytną technikę przerywania sceny w tej części interfejsu API, teraz masz problem z powieleniem tej logiki we wszystkich implementacjach zaplecza. To dużo dodatkowego wysiłku, więc zachowaj prostotę. Zarządzanie scenami powinno być częścią wyższego poziomu interfejsu API, który używa opakowania, a nie częścią samego opakowania.
Wybierz cele, które będziesz wspierać i zrozum je. Trudno jest napisać przyzwoite opakowanie dla „wszystkiego” i prawdopodobnie nie musisz (prawdopodobnie nie musisz pisać ani jednego opakowania, jak zauważono w odpowiedzi Filipa ). Prawie niemożliwe jest napisanie przyzwoitego opakowania, jeśli nie znasz już interfejsów API, które zamierzasz zawinąć.
Regularnie oceniaj stan swojego interfejsu API. Zasadniczo powinien mieć mniejszą powierzchnię niż leżące u podstaw owinięte API; jeśli odkryjesz, że tworzysz typy opakowań jeden do jednego dla każdej struktury D3D lub każdego wywołania funkcji OpenGL, prawdopodobnie zboczysz z kursu.
Spójrz na to, co już minęło. Sokol i BGFX to interfejsy API, które zapewniają poziomy agnostycyzmu, które mogą być przydatne i stosunkowo łatwe do zrozumienia (szczególnie te pierwsze).