Skip to main content

Ano ang isang stencil buffer?

Sa programming ng mga graphic graphics, ang isang stencil buffer ay isang lugar ng memorya na maaaring iguhit at magamit na may kaugnayan sa iba pang mga graphics buffer upang makamit ang iba't ibang mga epekto, o upang mag -mask ng mga lugar ng isang eksena upang hindi sila maproseso o mai -render.Ang isang stencil buffer ay isang per-pixel buffer na katulad ng isang itim at puting imahe, kung saan ang bawat lokasyon sa buffer ay maaaring humawak ng isang halaga na madalas na 1 byte ang haba ngunit maaaring maging kasing liit ng 1 bit.Ang buffer ay orihinal na idinisenyo upang kumilos bilang isang totoo o maling mask, katulad ng isang tunay na mundo na stencil, kaya ang mga lugar ng isang eksena ay maaaring hindi mabalewala o hindi pinansin sa pamamagitan ng pagtatakda ng mga halaga ng iba't ibang mga rehiyon ng stencil buffer sa isang halaga maliban sa zero.Mayroong isang bilang ng mga gamit para sa buffer na lampas sa simpleng masking, kabilang ang pagguhit ng isang dami ng anino, pagpapatupad ng mga halos sa paligid ng mga bagay o paghahanap ng mga lugar kung saan ang mga bagay ay magkakapatong sa isa't isa.Sa maraming mga pagkakataon, ang buffer ay pinananatili sa memorya ng graphics sa isang graphics card upang ma-access ito nang mabilis sa panahon ng pag-render.

Ang konsepto ng isang stencil bufferInilapat sa isang three-dimensional (3D) na eksena habang ang mga vertice ay lumipat sa pamamagitan ng graphics pipeline.Kung ang lokasyon ng 3D vertex, sa sandaling rasterized, na may kaugnayan sa isang lugar ng stencil buffer na hindi nakatakda sa zero, kung gayon ang vertex ay maaaring hindi papansinin at ang natitirang pagproseso ng pipeline ay nilaktawan.Pinapayagan nito ang mga programmer ng isang paraan upang mag -render lamang ng mga maliliit na bahagi ng isang eksena o upang mag -render ng isang imahe sa isang hindi regular na hugis na viewport, tulad ng isang pagmuni -muni sa isang maliit na salamin sa loob ng isang mas malaking eksena, kung saan ang hugis ng salamin ay iginuhit bilang isang stencil saBuffer, at pagkatapos ay ang pagmuni-muni ay iginuhit sa pamamagitan ng hugis na iyon.Habang binuo ang mga graphic card, ang karamihan sa mga buffer ay nagawang humawak ng isang buong halaga ng byte sa bawat lokasyon ng pixel, na nagpapahintulot sa mga programmer na magkaroon ng mas kumplikadong mga halaga sa isang lokasyon.Pinahihintulutan nito ang buffer na magamit upang makita ang mga lugar na kung saan ang mga bagay ay magkakapatong, na maaaring gawin sa pamamagitan ng pagdaragdag ng halaga ng buffer sa isang lokasyon kung ang isang bagay ay sumasakop sa pixel na iyon sa screen kapag rasterized.Matapos ang operasyon na ito, ang halaga ng bawat lokasyon ng pixel sa buffer ay katumbas ng bilang ng mga bagay na tumatawid sa pixel sa isang screen.

Ang isa sa mga pinakatanyag na gamit para sa isang stencil buffer ay lumilikha ng mga anino ng dami.Magagawa ito sa pamamagitan ng unang pag -render ng isang eksena na may napaka -dim na pag -iilaw upang ang lahat ay lumilitaw na shaded.Susunod, ang mga kalkulasyon ay ginawa upang matukoy ang lokasyon ng lahat ng mga polygon na ibabaw sa eksena na naiilaw sa pamamagitan ng isang ilaw na mapagkukunan, at ang mga hugis na ito ay inilipat sa stencil buffer.Ang eksena ay nai -render muli na kung ang bawat bagay ay ganap na naiilawan at pinaghalo sa pamamagitan ng mga hugis ng stencil papunta sa anino na eksena, na epektibong lumilikha ng isang imahe na lumilitaw na naglalaman ng mga bagay na may mga anino.