Để tham khảo - qgl.h của Doom3 .
OpenGL là một API nhỏ lẻ. Bạn phải thường xuyên làm việc với các con trỏ hàm vì việc triển khai tiêu chuẩn thiếu chức năng mới hoặc vì bạn muốn làm việc với các tiện ích mở rộng. Ví dụ: nếu bạn muốn gọi glCreateShader
, nhưng HĐH mà bạn đang phát triển không giao hàng với các tiêu đề GL đủ mới, bạn phải sử dụng glGetProcAddress("CreateShader")
để tải chức năng ra khỏi trình điều khiển của người dùng. Và sau đó bạn phải lưu trữ con trỏ hàm đó ở đâu đó.
Ngay cả khi môi trường phát triển của bạn có một chức năng cụ thể, máy của người dùng có thể không. Và sau đó, một chức năng nhất định có thể có 2-3 dạng (tiện ích mở rộng nhà cung cấp, tiện ích mở rộng ARB, chức năng cốt lõi) và do đó bạn có thể phải tìm kiếm một chức năng dưới nhiều tên khác nhau.
Nhiều thư viện "trình tải" GL (như GLEW ) cố gắng tuân theo các quy ước GL. Họ tạo ra các hàm "giả" với gl
-prefix thông thường và cố gắng làm cho mã của bạn hoạt động một cách kỳ diệu trên bất kỳ HĐH hoặc trình điều khiển nào hỗ trợ các tính năng cần thiết. Về cơ bản, thay vì glFoo
trở thành một chức năng thực tế, nó chỉ là một con trỏ toàn cầu chức năng và thư viện bộ nạp (trong quá trình khởi hoặc sử dụng đầu tiên) tìm kiếm FooEXT
, FooARB
và Foo
cho đến khi nó tìm thấy một thực hiện và sau đó chuyển nhượng đó để con trỏ toàn cầu. Mã máy khách trông giống như chỉ gọi một hàm thông thường nhưng tất cả đều được giải quyết một cách kỳ diệu khi chạy trong quá trình khởi tạo theo cách xử lý tất cả các nền tảng và trình điều khiển khác nhau ngoài kia.
Các thư viện khác đặt các hàm trong không gian tên hoặc thay đổi một chút so với định mức GL. id viết loader riêng của họ, hoặc vì họ không thích những người mà tồn tại hay - nhiều khả năng - Quake chỉ có trước bất kỳ thư viện khác mà id có thể đã sử dụng (các q
năm qgl
là viết tắt khả năng cho Quake, đó là trò chơi id Tech đầu tiên sử dụng GL).
Thông số kỹ thuật GL được viết với khả năng này. Thông số kỹ thuật được viết không có tiền tố; đó là việc triển khai OpenGL quyết định sử dụng tiền tố nào ( gl
dĩ nhiên là tiền tố chung). Các thư viện trình nạp đặt các hàm trong không gian tên hoặc sử dụng tiền tố của riêng chúng là hoàn toàn hợp lệ.
Doom 3, dựa trên công cụ Quake, hoàn toàn điển hình và hợp lý trong việc sử dụng thư viện trình tải để xử lý các điểm kỳ lạ của GL trên nhiều nền tảng và trong việc chọn sử dụng qgl
tiền tố.
id
xấu (bạn hoàn toàn đúng về cách viết hoa), mặc dù en.wikipedia.org/wiki/Id_Tech vẫn được viết bằng khoảng trắng, trong tất cả các nguồn tôi có thể tìm thấy.