OSG設定紋理和渲染屬性

2021-07-15 08:54:44 字數 1070 閱讀 5285

1、渲染屬性和模式

1.1 opengl中的渲染狀態設定

對於實時三維場景**系統,為了保證其真實性,一般來說,開發者都不得不儘量減少載入模型的頂點數目,以降低系統和顯示卡的運算負荷。例如,乙個圓柱體的側面可以用少量的母線來組成,從而呈現出一種不平滑的效果;再比如在三維遊戲中,人物的手腳只用有限幾個四邊形麵片組成,這在近距離觀察的時候會有很明顯的粗糙不平的現象。不過,通過使用紋理和光照的配合,我們可以很好地遮蔽這些不足,使場景渲染達到一種接近真實世界的水準。

opengl提供了大量用於增強場景渲染效能的渲染狀態巨集,只要預先設定好這些巨集的引數,並在適當的時候啟動或者禁用巨集,就可以實現多種多樣的場景描述效果。這一切都可歸功於opengl的狀態機機制,即使用者輸入的某一渲染狀態會一直保留,知道使用者再次改變它們為止。常見的各種渲染狀態量包括光照、材質、霧效、影象融合(blend)、多邊形偏移(polygon offset)等,只要與之相關的引數一經設定,不手動修改的話,便會始終作用在所有在場景中繪製的物件上。

但是opengl中幾何體的繪製工作確並非是渲染狀態的一種。我們可以將幾何圖元序列視為一組傳入opengl管線的指令集合,而當前指定的各種渲染狀態也會隨著這**元集合被一同送入繪製管線,例如當前的線寬、多邊形偏移量、點大小和紋理屬性等。

1.2 節點的渲染狀態幾何

osg採用包圍體層次的形式來構建不同層次、不同功能的場景節點,每乙個節點都可以儲存多種型別的渲染屬性和模式;而父子節點之間則存在多種渲染狀態的繼承關係。我們將乙個節點所賦予的多個渲染狀態,包括各種屬性(attribute)和模式(mode),稱為乙個渲染狀態集合,並使用stateset來來表示。

osg中用於表達渲染屬性的stateattribute類及其派生類的工作,就是將opengl的各個渲染屬性引數按照其型別進行分組和封裝,並通過setattribute()函式設定給某個節點的渲染狀態集;對於紋理相關的屬性,還需要額外指定乙個紋理單元並使用settexutureattribute()進行傳遞;屬性和模式相互繫結時,則可以直接使用setattributeandmodes()或者settextureattributeandmodes()。

Lessong 7 紋理載入和渲染

sdl2.0的乙個新新增的主要部分就是紋理渲染api,這可以使你進行快速 靈活的硬體渲染,在本教程中我們將使用這種新的技術 載入個人的紋理影象 sdl texture loadtexture string path the wwindow we ll be rendering to sdl wind...

設定溢位屬性和可見性屬性

overflow 指明在元素內容超出元素邊界時,超出部分是被截掉,還是用滾動條顯示。可選的值是 visible 顯示超出該元素的內容 hidden 隱藏 scroll 總是顯示滾動條 auto 讓瀏覽器決定是否顯示滾動條 或者inherit 使用父物件的設定 clip 指定專案的裁剪框,只顯示框內的...

DOM獲取和設定屬性

一.節點 節點 node 這詞是網路術語,表示網路中的乙個連線點,乙個網路就是由一些節點構成的集合。三種型別節點 元素節點,文字節點,屬性節點 不要忘記買東西 上行 中 元素為元素節點,title a gentle reminder 為屬性節點 不要忘記買東西為文字節點 二.css 繼承 inher...