Primitiv (dasturlashda)

Vikipediya, ochiq ensiklopediya

PrimitivOpenGL-da ikkita o'xshash, ammo alohida tushunchalarga bo'linadi. Birinchi ma'nosi, OpenGL tomonidan ko'rsatilgan vertex-lar oqimi nimani anglatishini tavsiflash uchun ishlatiladigan talqin sxemasiga ishora qiladi. Masalan: "GL_POINTS". Bunday uchlar xohlagancha uzunlik qiymatiga ega bo'lishi mumkin. Ikkinchi, ya'ni "Asosiy primitiv" deb ataluvchining ma'nosi Primitiv Assambleya sifatida vertex-lar oqimining talqini natijasiga ishora qilishini anglatadi. Shuning uchun, primitivlarning tartiblangan ketma-ketligida primitivning talqini ushbu nuqta oqimini qayta ishlash natijalariga bog'liq bo'ladi.

Vertex oqimi[tahrir | manbasini tahrirlash]

Vertex oqimi - bu vertex-larning tartiblangan ro'yxati. Ushbu oqim qayerdan kelib chiqishi primitiv yig'ilish qachon bo'lib o'tishi va renderlash quvurining qaysi bosqichlari ishtirok etishiga bog'liq. Vertex oqimlari quyidagilardan kelishi mumkin:

  • Vertex Spetsifikatsiyasi orqali aniqlangan va Vertex Shader tomonidan qayta ishlanadigan Vertex Rendering buyruqlari. Primitiv tip - renderlash buyrug'i bilan belgilangan tur.
  • Tessellation, Tessellation Evaluation Shader bajarilgandan so'ng. Primitiv tip TESda ko'rsatilgan mavhum yamoq turi bilan belgilanadi.
  • Geometry Shader primitiv chiqishlari. Primitiv turi GS tomonidan belgilanadi.

Oqim bilan bog'langan primitv bu oqimning qanday qilib asosiy primitivlarning tartiblangan ketma-ketligiga bo'linishini belgilaydi: nuqtalar, chiziqlar yoki uchburchaklar.

Nuqta primitivlari[tahrir | manbasini tahrirlash]

Faqat bir turdagi primitiv nuqta mavjud: GL_POINTS. Bu OpenGL ning oqimdagi har bir alohida vertex-ni nuqta sifatida izohlashiga olib keladi. Ularga tekstura ko'rsatilgan nuqtalar ko'pincha "nuqta spritlari" deb ataladi.

Nuqtalar ma'lum bir oyna maydoni o'lchamidagi ekranga moslashtirilgan kvadratchalar sifatida rasterlanadi. O'lcham ikki usulda berilishi mumkin: oxirgi faol vertex-larni qayta ishlash shader bosqichi yoki kontekst holati bo'yicha. Shaderdan nuqta o'lchamini o'rnatish uchun dasturdan nuqta o'lchamini o'rnatish uchun argument bilan glEnable (GL_PROGRAM_POINT_SIZE) ni yoqing. Agar GL_PROGRAM_POINT_SIZE yoqilgan bo'lsa, nuqta o'lchami float gl_PointSize chiqish o'zgaruvchisidan olinadi. Agar u o'chirilgan bo'lsa, nuqta o'lchami primitivning barcha nuqtalari uchun doimiy bo'ladi va glPointSize funksiyasi tomonidan o'rnatiladi.

O'lcham nuqta kvadratining har bir tomoni egallagan oyna piksellari sonini belgilaydi. Nuqtaning joylashuvi bu kvadratning markazini belgilaydi.

Nuqta o'lchami qanday aniqlanganidan qat'i nazar, u 0 dan katta bo'lishi kerak, aks holda aniqlanmagan xatti-harakatlar natijalari. Nuqta o'lchamlari uchun amalda aniqlangan diapazon mavjud va har ikkala usulda berilgan o'lcham ushbu diapazonga mahkamlanadi. Siz diapazonni GL_POINT_SIZE_RANGE bilan so'rashingiz mumkin (2 ta suzishni qaytaradi). GL_POINT_SIZE_GRANULARITY bilan so'rashingiz mumkin bo'lgan nuqta granularligi ham mavjud; amalga oshirish o'lchamlarni donadorlikning eng yaqin karraligacha mahkamlaydi.