D3DX - D3DX

Yilda hisoblash, D3DX (Direct3D kengaytmasi) bu eskirgan yuqori darajadir API to'ldirish uchun yozilgan kutubxona Microsoft "s Direct3D grafik API. D3DX kutubxonasi joriy etildi Direct3D 7 va keyinchalik yaxshilandi Direct3D 9. U vektorlar, matritsalar va ranglar bo'yicha umumiy hisob-kitoblar, qarash va proektsion matritsalarni hisoblash, spline interpolatsiyalari va yana bir qancha murakkab vazifalarni, masalan, 3D grafik dasturlash uchun ishlatiladigan shaderlarni yig'ish yoki yig'ish, siqilgan skelet animatsiyasini saqlash va matritsalar to'plamlarini taqdim etadi. Tangens-kosmik hisoblash, mashni soddalashtirish, oldindan nurlanishni uzatish, vertikal keshga qulaylik va chiziqlarni qayta tartiblashtirishni optimallashtirish, shuningdek, 3 o'lchamli matnli mashlar uchun generatorlar kabi murakkab mashqlar bajaradigan bir nechta funktsiyalar mavjud. 2D funktsiyalari ekran-bo'shliq chiziqlari, matn va sprite asosidagi zarracha tizimlarini chizish uchun darslarni o'z ichiga oladi. Kenglik funktsiyalari turli kesishuv tartiblarini, baritsentrik koordinatalardan / ga o'tkazishni va cheklash qutisi va sfera generatorlarini o'z ichiga oladi.

D3DX kutubxonasida o'yinlar kabi 2D / 3D dasturlarining ko'pchiligida umumiy ishlarni bajarish uchun oldindan yozilgan tartiblar mavjud. Beri Direct3D API nisbatan past darajadagi, D3DX kutubxonasidan foydalanish odatda ancha sodda.

2012 yilda Microsoft D3DX bo'lishini e'lon qildi eskirgan ichida Windows 8 Kabi boshqa rivojlanish doiralari bilan bir qatorda SDK XNA. Shader effektlari, to'qimalarni boshqarish, geometriyani optimallashtirish va mash modellari nashr etilgan alohida manbalar sifatida mavjud GitHub.[1] Kabi D3DX ning matematik tuzilmalari vektorlar va matritsalar, DirectXMath-da XNAMath bilan birlashtiriladi[2] va sferik harmonikalar matematikasi alohida manba sifatida taqdim etiladi.[1]

Interfeyslar

D3DX kutubxonasi quyidagilarga amal qiladi MAQOMOTI ob'ektga yo'naltirilgan dasturlash model. Funktsional imkoniyatlar yordamida kirish mumkin C ++ o'xshash interfeyslar.

ID3DXEffect

ID3DXEffect interfeysi FX shaderlarini (.fx) kompilyatsiya qilish va bog'lash uchun ishlatiladi. U nomlangan shader parametrlarini apparat doimiy registrlariga, parametrlar havzalariga avtomatik ravishda xaritalashni, mavjud bo'lgan namuna oluvchilarga teksturalarni xaritalashni, "texnika" ni va render holatini o'zgartirishni qo'llab-quvvatlaydi.

ID3DXFont

ID3DXFont interfeysidan 2 o'lchovli matn chizish uchun foydalanish mumkin. Shuningdek, D3DXCreateText-ga qarang, bu 3-darajali matni yaratadi.

ID3DXLine

ID3DXLine interfeysi naqsh bilan ekranning bo'sh joyiga qarshi chiziqlarni chizish uchun ishlatilishi mumkin.

ID3DXMesh

ID3DXMesh interfeysi meshlarni saqlash va vertikal keshga qulaylik va chiziqlarni qayta tartiblash uchun meshlarni optimallashtirish uchun ishlatiladi. D3DX-dagi ba'zi funktsiyalar ushbu interfeysda ishlaydi. Masalan, normal va parallaks xaritalash kabi effektlar uchun tangens-bo'shliq ramkasini yaratish uchun D3DXComputeTangentFrame. Ushbu sinfning avlodi ID3DXPMesh bo'lib, geometriyani soddalashtirishi mumkin.

ID3DXPRTEngine

U uchun ishlatiladi Oldindan hisoblangan nur o'tkazmasi - sharsimon harmonikali yoritishga o'xshash texnika, bu oldindan yoritilgan global yoritishda va atrofni yumshoq yoritishda ishlatiladi.

ID3DXSprite

ID3DXSprite interfeysi - bu C ++ klassi a deb nomlanuvchi ekranga 2 o'lchovli rasm chizish uchun ishlatiladi sprite yilda kompyuter grafikasi. Yilda DirectX 7 bu odatda yordamida amalga oshirildi DirectDraw Eskirgan API.

Dasturchiga, odatda, 2D chizish uchun render holatini va dunyo konvertatsiyasini o'rnatish uchun faqat ID3DXSprite ob'ektining Begin () usulini chaqirish kerak, qo'shish uchun Draw () usulini chaqiring to'qimalar chizilgan ro'yxatga va nihoyat End () usulini chaqirib tasvirlarni ekranga chizish va asl grafik holatini tiklash.

D3DXSprite-ning keng tarqalgan tanqidlari shundaki, u sust edi, ammo bu masala shu kunga qadar ko'rib chiqildi Direct3D 9.

Vazifalar

D3DXComputeTangentFrame

U odatdagi / tepalik xaritalash, paralaks xaritalash va anizotropik yoritish modellari kabi effektlar uchun ishlatiladigan mashning teginish-kosmik doirasini hisoblab chiqadi. Tangens-kosmik uzilishlar cho'qqilariga dublikatlar qilish orqali ishlov beradi va shunday qilib tukli to'p muammo. U yuzlarning teskari yo'naltirilgan ultrabinafsha o'rashini boshqarolmaydi, shuning uchun oynali naqshli xaritasi bo'lgan modellar shu sababli yorug'lik muammosiga duch kelishi mumkin.

Direct3D10

Direct3D 10 uchun D3DX10 yordamchi kutubxonasi funktsional jihatdan Direct3D 9 uchun D3DX ga o'xshash edi va bir xil D3DXMath kutubxonasi va Block Compression (BC1-BC5) dastur kodeklarini o'z ichiga olgan. Asosiy farqlar shundan iboratki, Direct3D 10 uchun Effects operatsion tizimining tarkibiy qismiga aylandi, HLSL kompilyatori alohida D3DCompile DLL-ga ko'chirildi va tekstura tasvirini yuklash va saqlash kodi Windows tasvirlash komponenti. WIC-dan foydalanishga o'tish natijasida D3DX10 qo'llab-quvvatlanmadi Truevision TGA, RGBE rasm formati, yoki Portativ PixMap D3DX tomonidan qo'llab-quvvatlangan fayl formatlari. D3DX10 tarkibiga UVAtlas izoxart to'qimalarining atlasini yoki qo'shilmagan Oldindan hisoblangan nur o'tkazmasi API-lar.

Microsoft Docs uchun D3DX10 ning barcha versiyalari eskirgan.[2]

Direct3D11

Direct3D 11 uchun D3DX11 yordamchi kutubxonasi D3DX10 ning qisqartirilgan versiyasi edi. Bunga WIC yordamida teksturali rasmlarni yuklash va saqlash kodlari va Block Compression (BC1-BC7) dastur kodeklari kiritilgan, ammo unchalik katta emas.

Microsoft Docs uchun D3DX11 ning barcha versiyalari eskirgan.[2]

D3DX9, D3DX10 va D3DX11 funktsiyalarining aksariyati Direct3D 11 yoki undan keyingi versiyalar uchun ochiq manbali loyihalarga ko'chirildi: DirectXMath,[3] DirectX asboblar to'plami,[4] DirectXTex,[5] DirectXMesh,[6] va UVAtlas.[7] DXUTning ochiq manbali versiyalari ham mavjud[8] va effektlar (FX11)[9] ish vaqti mavjud.

Direct3D12

DLL-ga asoslangan D3DX12 yordamchi kutubxonasi yo'q. Microsoft Docs-da hujjatlashtirilgan Direct3D 12 uchun ba'zi bir asosiy yordamchilar uchun D3DX12 yordam dasturi sarlavhasi (barchasi ichki C ++ kodi) mavjud.[10] va GitHub-da nashr etilgan.[11] Bu matematik, spritlar, shriftlarni ko'rsatish, 3D shakllar, mashlar yoki to'qimalarni yuklash kabi funktsiyalarni o'z ichiga olmaydi. Direct3D 12 uchun DirectX asboblar to'plami mavjud[12] etishmayotgan funksiyani ta'minlaydigan.

Adabiyotlar

  1. ^ a b "D3DXsiz yashash". MSDN.
  2. ^ a b v Microsoft. "DirectX SDK qayerda?". Microsoft. Olingan 28 iyun 2020.
  3. ^ "DirectXMath". GitHub.
  4. ^ "DX11 uchun DirectX asboblar to'plami". GitHub.
  5. ^ "DirectXTex teksturasini qayta ishlash kutubxonasi". GitHub.
  6. ^ "DirectXMesh geometriyasini qayta ishlash kutubxonasi". GitHub.
  7. ^ "UVAtlas izoxart teksturasi atlasining kutubxonasi". GitHub.
  8. ^ "Direct3D 11 uchun DXUT". GitHub.
  9. ^ "Direct3D 11 uchun effektlar". GitHub.
  10. ^ Microsoft. "D3D12 uchun yordamchi tuzilmalar va funktsiyalar". Microsoft. Olingan 28 iyun 2020.
  11. ^ "D3DX12". GitHub.
  12. ^ "DX12 uchun DirectX asboblar to'plami". GitHub.

Tashqi havolalar