• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            黎明的剔透里伸出了你沁清的曖昧

            Graphics|EngineDev|GameDev|2D&3D Art

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks

            為什么需要osgViewer

            在過去的幾年里,用戶已經(jīng)將現(xiàn)有的viewer庫osgProducer(基于Producer)發(fā)展到遠(yuǎn)超出它設(shè)計(jì)初期的目的。開發(fā)Producer之外的窗體工具箱的難題已被解決,支持處理一個(gè)場景具有的多個(gè)獨(dú)立的view,特別復(fù)雜的是當(dāng)應(yīng)用程序使用數(shù)據(jù)分頁,而且還需要接二連三的打開/關(guān)閉窗口的時(shí)候。

            用戶與遇到的其他問題還有生成的復(fù)雜性,有一系列的額外的依賴的障礙需要解決。當(dāng)學(xué)習(xí)這些API的時(shí)候,有很多的API需要去學(xué)習(xí),這會(huì)增加學(xué)習(xí)曲線的陡峭度。如果我們提供一個(gè)原生的viewer庫,都使用一樣的矩陣、內(nèi)存管理和編碼形式和設(shè)計(jì),這樣的話學(xué)習(xí)起來就會(huì)變得簡單。支持多種窗體工具箱和復(fù)雜的viewer配置也非常易學(xué)易用,且用戶可以像使用組件一樣使用view而不是像以前一樣需要了解很多的實(shí)現(xiàn)細(xì)節(jié)。

            osgViewer的目標(biāo)

            osgViewer背后的概念在于滿足一系列類的需求,這些類要求能夠無縫的支持廣泛的窗口工具包(即QT、Win32、MFC、WxWindows、Fox、FLTK、SDL、AGL/CGL等等)。也同時(shí)提供一種方便的架構(gòu)來管理簡單的窗體、單攝像機(jī)視點(diǎn)的應(yīng)用程序到復(fù)雜的多窗口、多視點(diǎn)、多線程的應(yīng)用程序。

            目前的狀況

            osgViewer的大部分特性都完成了,Windows、X11和OSX Carbon的支持已經(jīng)被集成,也附帶了兩個(gè)Viewer和CompositeViewer類。新的線程模型已經(jīng)被引入,可以更好的支持現(xiàn)有的雙核CPU。在Windows平臺下,多線程、多窗口已經(jīng)被完整的支持,使其能夠和其他平臺得到一致的伸縮性。

            所有的OpenSceneGraph例子現(xiàn)在已經(jīng)被移植到使用osgViewer,最多的改變還在于從osgProducer::Viewer到osgViewer::Viewer的細(xì)微改變。

            OpenSceneGraph的2.0發(fā)行版將會(huì)看到osgViewer作為標(biāo)準(zhǔn)的viewer庫,同時(shí)osgProducer庫也轉(zhuǎn)移到自己獨(dú)立的一個(gè)發(fā)行。osgProducer會(huì)與OpenSceneGraph的主要發(fā)布一起進(jìn)行維護(hù)。這次OpenSceneGraph的改動(dòng)將不會(huì)要求Producer作為依賴了,所以只有OpenThreads才會(huì)作為主要的額外依賴。

            osgViewer相關(guān)的功能所關(guān)聯(lián)的類:

            osg核心庫:

            • osg::Camera(之前被叫做 osg::CameraNode)從1.0版本起。這個(gè)節(jié)點(diǎn)包含一個(gè)它渲染的場景。具有投影和視圖矩陣、視口和一個(gè)可選的osg::GraphicsContext讓其渲染,同樣還包含一些選項(xiàng)能夠讓其配置為渲染到紋理。
            • osg::OperationsThread/GraphicsThread - 從1.0版本起。是一個(gè)線程類,可以讓一系列GraphicsOperation在另外一個(gè)單獨(dú)的線程進(jìn)行。
            • osg::GraphicsContext - 從1.0版本起。是一個(gè)基礎(chǔ)類,將實(shí)現(xiàn)創(chuàng)建和使用圖形上下文的細(xì)節(jié)進(jìn)行了抽象-它可能是一個(gè)pbuffer或者是一個(gè)傳統(tǒng)的圖形窗口。GraphicsContext"有一個(gè)"可選的GraphicsThread。目前用在osg::CameraNode上以便管理pbuffer渲染到紋理的實(shí)現(xiàn)。
            • osg::View - 管理所有攝像機(jī)的類。這些攝像機(jī)協(xié)同一致的工作,以渲染單一、協(xié)調(diào)一致的場景的視野。一個(gè)視野有一個(gè)主osg::Camera控制場景的視圖和投影矩陣,和一系列的從動(dòng)的osg::Cameras。這些從動(dòng)的攝像機(jī)的視野和投影矩陣和主攝像機(jī)的矩陣有一定關(guān)系,每一幀都更新。主從攝像機(jī)都可以用于渲染。

            osgGA庫:

            • osgGA::EventQueue - 從1.0版本起,可以按照以前的樣子使用, 只是命名空間編程了osgViewer。osgGA::GUIEventAdapter - 從1.0版本起,因?yàn)樗睦^承不是很理想,和僅僅關(guān)聯(lián)到了鼠標(biāo)和鍵盤事件,但是在通用的和可擴(kuò)展的osgViewer::Event類中作為一個(gè)位置標(biāo)識符的還是差強(qiáng)人意。
            • osgGA::GUiEventHandler - 從1.0版本起,與GUIEventHandler有點(diǎn)相像 - cludgy??? 和需要在最終的osgViewer庫進(jìn)行更新,但是在構(gòu)造osgViewer原型時(shí)還是很好的。
            • osgGA::EventVisitor - 從1.0版本起,需要在上面做一些工作,但是在osgViewer::EventVisitor會(huì)一直照這個(gè)模式發(fā)展下去。

            osgViewer庫:

            • osgViewer::View - osg::View的子類,增加更高層次的viewer功能。
            • osgViewer::Scene - 管理場景圖數(shù)據(jù)的輔助類。
            • osgViewer::GraphicsWindow - 實(shí)現(xiàn)OpenGL圖形化窗口的基類,它繼承于osg::GraphicsContext,不同在于增加了事件處理。
            • osgViewer::Viewer - osgProducer::Viewer的功能替換。osgViewer::Viewer “是一個(gè)” osgViewer::Viewer,所以能夠從View獲得多窗體/多攝像機(jī)支持,但從概念上來說還是只在一個(gè)單獨(dú)的場景里管理了一個(gè)單獨(dú)的視野。
            • osgViewer::!CompositeViewer - 通過使用的osgViewer::View一個(gè)列表,增加對需要在一個(gè)場景里面多個(gè)視點(diǎn)的viewer的支持。這種復(fù)雜的viewer功能在先前的OpenSceneGraph里面并沒有被很簡單的實(shí)現(xiàn),但是現(xiàn)在變得很直接了。

            目前有三種具體的osgViewer::GraphicsWindow的實(shí)現(xiàn),這些實(shí)現(xiàn)支持所有的OpenSceneGraph發(fā)行所在的平臺。

            • osgViewer::GraphicsWindowWin32 - Windows支持
            • osgViewer::GraphicsWindowX11 - 所有Unix平臺的X11 支持(包含OSX)。
            • osgViewer::GraphicsWindowCarbon - OSX的Carbon支持.
            • osgViewer::GraphicsWindowEmbedded - 一個(gè)GraphicsWindow的適配器版本,這個(gè)版本不執(zhí)行大部分的函數(shù)操作,但是允許Viewer和CompositeViewer類能夠在外部的窗體里面進(jìn)行嵌入工作,例如被QT、FLTK創(chuàng)建的。

            為了測試osgViewer::SimpleViewerosgViewer::GraphicsWindow的可行性,這里有為各種窗體工具箱里寫的若干個(gè)基于simpleviewer的示例。

            • osgviewerGLUT
            • osgviewerFLTK
            • osgiewerQT
            • osgiewerWX
            • osgviewerSDL
            • osgviewerCocoa
            • osgviewerMFC
            posted on 2012-01-09 21:14 情絕格調(diào)(fresmaster) 閱讀(877) 評論(0)  編輯 收藏 引用 所屬分類: Graphics
            亚洲人成网站999久久久综合| 久久精品国产亚洲AV香蕉| 久久久久久久人妻无码中文字幕爆| 亚洲欧洲久久久精品| 一本色道久久88精品综合 | 国产女人aaa级久久久级| 久久国产精品一区| 97精品国产97久久久久久免费| 2020久久精品国产免费| 久久久久国产精品三级网| 77777亚洲午夜久久多人| 99久久国产综合精品成人影院| 国内精品伊人久久久影院| 久久精品中文騷妇女内射| 亚洲国产精品无码久久久久久曰| 天天爽天天狠久久久综合麻豆| 久久99免费视频| 欧美精品国产综合久久| 精品久久久久久国产牛牛app| 久久精品人成免费| 欧美性猛交xxxx免费看久久久| 国产精品欧美久久久天天影视| 久久久亚洲裙底偷窥综合| 久久综合综合久久狠狠狠97色88| 亚洲AV无码久久精品狠狠爱浪潮 | 亚洲欧美精品伊人久久| 亚洲中文精品久久久久久不卡| 精品欧美一区二区三区久久久| 国产精品久久久久影院色| 久久人人爽人人爽人人AV东京热| 中文成人无码精品久久久不卡| 精品99久久aaa一级毛片| 久久99精品久久久久久| 久久91综合国产91久久精品| 久久天天躁狠狠躁夜夜网站 | 久久婷婷五月综合色奶水99啪| 亚洲精品美女久久777777| 久久久国产视频| 伊人久久大香线蕉综合Av| 久久只有这里有精品4| 亚洲国产成人久久精品99|