Untuk referensi - qgl.h Doom3 .
OpenGL adalah API kecil yang aneh. Anda harus sering bekerja dengan pointer fungsi karena implementasi standar tidak memiliki fungsionalitas baru atau karena Anda ingin bekerja dengan ekstensi. Misalnya, jika Anda ingin menelepon glCreateShader
, tetapi OS yang Anda kembangkan tidak dikirimkan dengan header GL yang cukup baru, Anda harus menggunakan glGetProcAddress("CreateShader")
untuk memuat fungsi dari driver pengguna. Dan kemudian Anda harus menyimpan pointer fungsi itu di suatu tempat.
Bahkan jika lingkungan pengembangan Anda memiliki fungsi tertentu, mesin pengguna mungkin tidak. Dan kemudian fungsi tertentu dapat datang dalam 2-3 bentuk (ekstensi vendor, ekstensi ARB, fungsi inti) sehingga Anda mungkin harus mencari fungsi di bawah beberapa nama yang berbeda.
Banyak pustaka "loader" GL (seperti GLEW ) mencoba untuk tetap berpegang pada konvensi GL. Mereka membuat fungsi "palsu" dengan gl
-prefix yang biasa dan mencoba membuat kode Anda secara ajaib berfungsi pada OS atau driver yang mendukung fitur yang diperlukan. Pada dasarnya, bukannya glFoo
menjadi fungsi yang sebenarnya, itu hanya fungsi pointer global dan perpustakaan loader (selama inisialisasi atau penggunaan pertama) pencarian FooEXT
, FooARB
dan Foo
sampai menemukan sebuah implementasi dan kemudian ditunjuk yang ke pointer global. Kode klien sepertinya hanya memanggil fungsi biasa tetapi secara ajaib semua akan diselesaikan saat runtime selama inisialisasi dengan cara yang berhubungan dengan semua platform dan driver yang berbeda di luar sana.
Perpustakaan lain menempatkan fungsi dalam ruang nama atau sedikit berbeda dari norma GL. id menulis loader sendiri, baik karena mereka tidak seperti yang yang ada atau - lebih mungkin - Quake hanya mendahului perpustakaan lain yang id bisa digunakan ( q
di qgl
tribun kemungkinan untuk Quake, yang merupakan pertandingan id Tek pertama yang digunakan GL).
Spesifikasi GL ditulis dengan kemungkinan ini. Spesifikasi ditulis tanpa awalan; itu adalah implementasi OpenGL yang memutuskan awalan mana yang akan digunakan ( gl
menjadi yang umum, tentu saja). Pustaka pemuat yang menempatkan fungsi dalam ruang nama atau menggunakan awalannya sendiri benar-benar valid.
Doom 3, yang didasarkan pada mesin Quake, benar-benar khas dan dibenarkan dalam menggunakan perpustakaan loader untuk menangani keanehan GL pada berbagai platform dan dalam memilih untuk menggunakan qgl
awalan.
id
buruk (Anda benar tentang kapitalisasi), meskipun en.wikipedia.org/wiki/Id_Tech masih ditulis dengan spasi, di semua sumber yang dapat saya temukan.