Bắt đầu bằng cách xác định những gì bạn thực sự cần từ phần "trình bao bọc" của API. Nói chung, rất đơn giản: bạn cần các tài nguyên cơ bản (bộ đệm, đổ bóng, kết cấu, trạng thái đường ống) và cách sử dụng các tài nguyên đó để tạo khung bằng cách gửi một số lệnh gọi.
Cố gắng giữ bất kỳ logic cấp cao nào ra khỏi phần trình bao bọc của API. Nếu bạn triển khai một kỹ thuật loại bỏ cảnh thông minh trong phần này của API, thì bây giờ bạn đang ở trên móc để sao chép logic đó trong tất cả các triển khai phụ trợ. Đó là rất nhiều nỗ lực thêm, vì vậy hãy giữ nó đơn giản. Quản lý cảnh phải là một phần của API cấp cao hơn sử dụng trình bao bọc thay vì là một phần của chính trình bao bọc.
Chọn các mục tiêu bạn sẽ hỗ trợ và hiểu chúng. Thật khó để viết các trình bao bọc tốt cho "mọi thứ", và có lẽ bạn không cần phải (có thể nói rằng bạn không cần phải viết một trình bao bọc duy nhất, như đã lưu ý trong câu trả lời của Philipp ). Hầu như không thể viết một trình bao bọc hợp lý nếu bạn không biết các API bạn sẽ bọc.
Đánh giá trạng thái API của bạn thường xuyên. Nhìn chung, nó phải có diện tích bề mặt nhỏ hơn các API được bao bọc bên dưới; nếu bạn thấy mình đang tạo các loại trình bao bọc một-một cho mọi cấu trúc D3D hoặc mọi lệnh gọi hàm OpenGL, có lẽ bạn đang bỏ qua khóa học.
Nhìn vào những gì công việc đã đi trước. Sokol và BGFX là các API cung cấp các mức độ bất khả tri có thể hữu ích cho bạn và tương đối dễ hiểu (đặc biệt là trước đây).