OpenGL buffers

Буффер гэж юу вэ?
Өгөгдөл хадгалж ашиглах зорилгоор санах ойд үүсгэсэн зайг хэлнэ.

OpenGL-д


  • Frame Buffer
  • Render Buffer
  • Энгийн buffer
гэсэн гурван төрлийн буффер ашиглагддаг. Эдгээрийг тайлбарлавал

Frame Buffer нь нөгөө хоёрыгоо бодвол арай жаахан хийсвэр шинжтэй. OpenGL-ээр рэндэрлэж гаргаж авсан зургийг компютерийн санах ойруу аль эсвэл Frame Buffer лүү хадгалж болно. 
Тиймээс Frame Buffer бол түр зуур л зураг хадгалах зориулалттай гэж бодогдохоор гэвч хараахан тийм бишээ. 
Үүн дээр нэг болон түүнээс дээш тооны олон зургийг OpenGL-ээр рэндэрлээд хадгалж болдог. 
Ямар төрлийн зураг хадгалдаг вэ гэхээр объектийн 3D огторгуй дэх гүний мэдээлэл (depth), аль объект нь наана хаасан байна аль объект нь цаана гарч рэндэрлэгсэн байна вэ гэдэг зүйлсийг илтгэсэн зурган мэдээллүүд байдаг.
Тэгэхээр Frame Buffer -ийг зурагнуудын цуглуулга гэж ойлгож болно. Үүн дээр зурагны мэдээллүүдийг массиваар хадгалдаг.

Render Buffer бол зөвхөн ганц зураг хадгалахад зориулагдсан түр зуурын санах ой юм. Тэгэхээр та өмнө дурдсан Frame Buffer-ийг Render Buffer-үүдийн цуглуулга юм гэдгийг ойлгосон байх. 3D програмчлалд нээх олон төрлийн Render Buffer үүсгээд байдаггүй дараах цөөн төрлийн буфферүүдийг ашигладаг үүнд : Color, Depth, Stencil болно. Энэ гурвыг тус бүрт нь тайлбарлая
  • Color Render Buffer дээр OpenGL рэндэрлэх үйл явцаар үүссэн эцсийн зургийг хадгалдаг. RGB гэсэн гурван сувгаар зурагны өнгийг пиксел дүрслэлээр хадгална.
  • Depth Render Buffer дээр 3D объектүүдийн Z тэнхлэгдэх гүний мэдээллийг хадгалж өгдөг. Дэлгэцийн хавтгайн(ажиглагч) урт өргөнийг харгалзан X болон Y тэнхлэгээр дүрсэлвэл Z тэнхлэг бол гүн буюу Depth нь юм. Объект Z тэнхлэг дээр хэр гүн буюу ажиглагчаас хэр хол байна вэ гэдгийг илтгэх байрлалын тоог энкодлож түүнийг пиксел болгон хадгалдаг учраас Depth Render Buffer дээр цагаан саарал өнгөтэй зураг үүсдэг. Пикселийн өнгө цагаан байх тусмаа илүү ойр байгааг илтгэнэ харин харлах тусмаа илүү холдож байгааг илтгэж байдаг. Бүрэн хар өнгө бол хамгийн хол байрлалыг төлөөлнө.
  • Stencil Render Buffer дээр объектийн харагдаж байгаа хэсгийг хадгалдаг, юман дээр наасан маск л гэсэн үг. Энэ буффер дээр хар болон цагаан өнгөнөөс бүрдсэн зураг хадгалагдана.

Энгийн Buffer объект нь server талын OpenGL call функцүүдээр ашиглагдах санах ой байдаг. Server гэхээр гайхаж байж болох юм, OpenGL бол Client-Server архитектур дээр үндэслэгдсэн API, үүний талаар дэлгэрүүлж хайж уншаарай.
Ерөнхийдөө энэ буффер объект нь мөн л түр зуур өгөгдөл хадгалах зориулалттай санах ой юм гэхдээ өмнөх хоёр шигээ бүрэн түр зуурынх бишээ. Энэ төрлийн Buffer объектийг програмын ажиллагааны туршид устгахгүйгээр ашиглаж болдогоороо онцлог. 
3D объектийн мэдээллийг эмхэтгэж цэгцэлсэн байдлаар энэ төрлийн буфферт хадгалж болно. Энэ хадгалах мэдээлэл нь structure болон index гэж хоёр ангилагддаг.
structure бол vertex-үүдийн массив, текстур буулгалтын координатууд, нормал векторууд, энгийн массив гэх мэт 3D объектийг дүрслэхэд шаардлагатай дурын өгөгдлүүд юм.
index бол struct дээр хадгалсан массивийн өгөгдлүүдийг 3D объектийн гадаргууг дүрслэхдээ хэрхэн ямар дарааллаар дүрсэлсэн байна вэ гэдгийг илтгэж байдаг.

Popular posts from this blog

Apache Spark + Cassandra. Hello World