OpenGL va 3D Engine lar haqida.

OpenGL va 3D Engine lar haqida.

OpenGL va 3D Engine lar haqida.

Salom.

Anchadan beri 3D ga qiziqaman. Balki bu yoshligimda Dendy ga qiziqqanim sababchi bo’lgandir. Mana vaqti kelib ancha malakaga ega bo’ldim, hozirda OpenGL va Engine lar ustida ancha ishlar olib bormoqdaman. Ajabmas vaqti kelib ishlarimni samarasini ko’rsam. Umuman ushbu maqolamda OpenGL va Enginelar haqida yozmoqchi edim.
Oxirgi bir oy bo’ldiki ishdan keyin faqat OpenGL va Engilar haqida maqolalar o’qidim, ko’pchiligini ishlatib Hello World ham yozib ko’rdim va o’zimnikini yozishga qaror qildim.

OpenGL

OpenGL ni o’rganishni boshlaganimda umuman nimaligini tushunmagandim, keyin bilsam video karta bilan ishlashga mo’ljallangan funksiyalar to’plami yoki API ekan. O’rganayotib o’zim shunaqa API yozsam bo’lmasmikin deb qidirdim. Yozsa bo’lakan lekin buning uchun har bir video kartadagi
GPU buyruqlarini o’rganib, unga yana drayver yozib chiqish kerak ekan. Bu esa juda ko’p vaqt, resursni talab qiladi.

Bu niyatimdan qaytib, OpenGL ni o’zini o’rganishga qaror qildim.

Aynan nimaga OpenGL, DirectX emas? Bilamizki hozirgi kunda o’yinlar bo’yicha Windows ancha oldinlab ketgan, shuning uchun DirectX ko’proq o’yin tuzishga yo’naltirilgan deb bilaman va faqat Windows OS qo’llab quvvatlaydi. Aslida bu manga OpenGL ni tanlashimga sababchi bo’lmagan. Bizni muhitda MacOS, Windows va Linux ham o’z o’rnini egallagan. Va mani maqsadim faqat o’yin tuzish emas, balki boshqa 3D kurslar, qo’llanmalar qilish. OpenGL cross-platform bo’lganligi uchun shuni tanlaganman va yana bir qancha sabablar bor.

3D engine, bu nima? OpenGL ni yozdim faqat funksiyalar to’plami ekan. OpenGL faqat sizga nuqta, chiziq, uchburchak, to’rtburcha va ochiq ko’pburchak chizish imkonini beradi. Qolgan narsalarni shulardan foydalanib o’zingiz chizishingiz kerak. Umuman 3D grafikada hamma narsa uchburchaklardan yasaladi. Hatto siz bilgan barcha o’yinlarni barcha elementlari uchburchaklardan iboratdir. Bundan tashqari OpenGL 3ds, md2 (3d model formatlari), jpeg, png (rasm farmatlari), waw, ogg (audio formatlar) ni birontasini tanimidi. Demak, 3D engine shunaqa harxil muammolarni hal qiladigan kutubxonadir. Ya’ni OpenGL dan foydalanib 3D modellarni import qilib beradi, animatsiyalarni qo’llaydi va teksturaga har xil formatdagi rasmlarni import qilib elementga berish imkoniyatini yaratadi.
Qisqacha qilib etganga, 3D engine bu kompyuterda 3D grafika bilan mo’ljallangan kutubxona (Faqat o’yin tuzishga emas, umuman. O’yin uchun, Game Engine bo’ladi :)).

OpenGL va Engine nimaligi haqida qisqacha gapirib o’tdim. Qolgan ma’lumotlarini GOOGLE akadan so’rasangiz etadi :).

CrossPlatform tayyor engine va qo’shimcha kutubxonalar.

Irrlicht — Manga juda yoqdi, ishlash juda qulay.

Ogre — bu ham yaxshi, faqat boshida tushunish sal qiyinroq. Va yana DirectX ni ham qo’llaydi.

GLFW — OpenGL kutubxona, oynalar yaratish, patoklar bilan ishlash imkoniyatini beradi.

OpenAL — Audio kutubxona.

Assimp — 3D modellarni import qilib beradigan kutubxona.

FreeImage — Rasmlar bilan ishlaydigan kutibxona.

Boost — Tarmoq bilan ishlaydigan kutibxona.

Bular o’zim ko’rgan kutibxonalar, agar internetdan qidirsangiz yana bir qancha kutibxonalar va engine larni topsa bo’ladi. Shuning bilan shu maqolam oxriladi, nasib qilsa keyingi maqolalarda OpenGL dagi dasturlarni ko’ramiz :).

Manba:

Dizayn, Grafika va Ovoz
OpenGL va 3D Engine lar haqida.