<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenCSG基于圖像 CSG 的庫(kù)

          聯(lián)合創(chuàng)作 · 2023-09-29 18:11

          OpenCSG是一個(gè)基于圖像CSG的庫(kù),CSG使用OpenGL渲染。OpenCSG使用c++編寫,并支持Microsoft Windows或Linux操作系統(tǒng)下最先進(jìn)的圖形硬件。

          什么是CSG呢?CSG是Constructive Solid Geometry(構(gòu)造實(shí)體幾何)的縮寫,它使用簡(jiǎn)單的3D圖形來(lái)構(gòu)造復(fù)雜圖形。也就是說(shuō),通過(guò)附加或求差的方法可以進(jìn)行圖形的組合,那些不是由CSG操 作產(chǎn)生的最基本的圖形稱之為primitives(基元),基元必須是實(shí)體,即基元必須要有明確的內(nèi)部或者外部定義。通過(guò)構(gòu)建,一個(gè)CSG也一定是實(shí)體。

          基于圖像的CSG渲染(深度緩沖區(qū)CSG渲染)是一個(gè)專用名詞,它為幾何邊界未經(jīng)過(guò)明確計(jì)算的 CSG形狀指定渲染算法,這種算法使用圖形硬件的幀緩沖區(qū)設(shè)置,如深度緩存或模板緩存,來(lái)構(gòu)建CSG形狀。OpenCSG實(shí)現(xiàn)多種算法結(jié)合,其中就有 goldfeather算法和SCS算法。

          優(yōu)點(diǎn):

          CSG是經(jīng)常被用作在CAD/CAM應(yīng)用程序中的基本建模技術(shù)。這里,基于圖像的CSG是交互操作CSG形狀的關(guān)鍵。由于OpenCSG對(duì)更復(fù)雜的圖像渲染較為快速,所以它能有效地在這些應(yīng)用中使用。

          很久以前諸如PovRay這樣的繪圖工具就已經(jīng)使用CSG進(jìn)行圖像建模了。盡管這種繪圖工具的互動(dòng)建模工具包恰恰忽略CSG命令,但OpenCSG代表了這種應(yīng)用軟件的一種有價(jià)值的附加品。

          總的來(lái)說(shuō),到目前為止CSG渲染已經(jīng)幾乎沒(méi)有再用于交互式應(yīng)用程序,因?yàn)樗璧乃惴◤?fù)雜且容易出錯(cuò)。我們希望通過(guò)提供一個(gè)免費(fèi)的庫(kù),這個(gè)庫(kù)是易于使用、快速靈活的,這將使它比目前更為主流。

          先決條件:

          OpenCSG的庫(kù)要求在OpenGL中也支持PBuffer或幀緩沖對(duì)象的圖形硬件。在PBuffers條件下,如果渲染到紋理的相關(guān)設(shè)備也被支持這將是有利的,如今OpenCSG使用RenderTexture類作為PBuffer庫(kù)。

          一直以來(lái),PBuffers已被廣泛支持。NVidia至少自 Radeon 系列就開始支持PBuffers,隨后是Riva TNT 和 ATI;其他供應(yīng)商生產(chǎn)的圖形硬件似乎并不支持PBuffers。因此,如果您不熟悉圖形硬件并且運(yùn)氣較差的話可能就無(wú)法使用OpenCSG來(lái)運(yùn)行程序。 在Linux條件下,您可能需要選擇同時(shí)支持OpenGL軟件渲染與PBuffers。

          幀緩沖對(duì)象是OpenGL的一個(gè)較新的擴(kuò)展。它們更易于用作開發(fā),現(xiàn)在(2010年)已經(jīng)成熟。它們也是OpenGL3.0的一部分、從1.2.0OpenCSG開始在默認(rèn)情況下使用OpenCSG,在較舊的版本中默認(rèn)使用PBuffers。

          對(duì)于OpenGL擴(kuò)展檢查,OpenCSG使用OpenGL擴(kuò)展甲等庫(kù)GLEW。

          OpenCSG寫在c++中,使用命名空間,并需要STL。在Windows下我不希望主要編 譯器不兼容。MSVC6, VC2003 .net和Dev-C++ 5 beta都提供相應(yīng)的工作區(qū)。在Linux環(huán)境下,您應(yīng)該使用gcc3或者更高版本。由于該編譯器并不能處理必須在內(nèi)部使用的std::map實(shí)現(xiàn),致使 gcc 2.95.x不再有效。

          要運(yùn)行好OpenCSG,您應(yīng)該有高填充率的圖形硬件。NVidia 圖形硬件自從 GeForce 和 ATI Radeon 以后滿足了以上要求。在OpenCSG::OcclusionQuery選項(xiàng)顯然需要封閉查詢,這個(gè)選項(xiàng)功能是從Radeon 9x00(x>= 5)和GeForce3(注意,GeForce4MX的數(shù)量為GeForce2!)顯卡芯片出現(xiàn)以后才開始支持的。

          OpenCSG 已成功地在英特爾和AMD的硬件上使用 Radeon HD 4670、 GeForce 8 x 00、GeForceFX 6800、5600 GeForceFX,Radeon 9700、 GeForce3、GeForce4MX 和 TNT2圖形硬件運(yùn)行(越往后越慢)。

          在Radeon9000上,OpenCSG會(huì)在除了標(biāo)準(zhǔn)Goldfeather渲染路徑以外的其他任何地方產(chǎn)生渲染錯(cuò)誤,這一情況曾廣為人知,這是否是驅(qū)動(dòng)器的問(wèn)題并不很清楚。我沒(méi)有在NVidia或ATI/AMD以外的圖形硬件上運(yùn)行OpenCSG的經(jīng)驗(yàn)。

          使用情況:

          OpenCSG的接口非常容易使用。只有一個(gè)叫做OpenCSG::Primitive的抽象類。A基元對(duì)象包含一個(gè)表示是附加還是求差的屬性操作。使用OpenCSG可以通過(guò)執(zhí)行render()方法來(lái)創(chuàng)建一個(gè)派生自具體基元的類。

          如今實(shí)現(xiàn)CSG渲染,有一個(gè)將std::vector<Primitive*> 作為參數(shù)的函數(shù)OpenCSG::render()。渲染函數(shù)求由基元組得出的CSG表達(dá)式的值并使用CSG的固有值來(lái)初始化深度緩沖區(qū)。顏色緩沖區(qū)仍然 沒(méi)有改變,此后您必須使用一個(gè)以GL_EQUAL為參數(shù)的深度函數(shù)來(lái)隱藏?cái)?shù)組中的基元。

          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲口爆 | 日日射天天操夜夜吊 | 欧美三级在线播放 | 亚洲激情久久久久豆花 | 国产综合视频在线观看 |