DX10中的幾何著色器的簡單實用介紹

2021-05-23 22:22:48 字數 1398 閱讀 5188

幾何著色器是dx10

中剛剛加入的內容,在

dx9中從未有過,其渲染過程中是介於頂點著色器與畫素著色器之間。

幾何著色器的使用主要目的是為了可以在著色器程式中改變頂點的數量和型別。

下面是乙個幾何著色器的定義

[maxvertexcount(n)]

void shadername (

primitivetype inputvertextype inputname [numelements],

inout streamoutputobjectoutputname)

在這段**中

maxvertexcount(n)定義了返回的最大頂點數,

n為最大頂點數

numelements

則定義了輸入

的頂點個數,primitivetype

定義了輸入的頂點的構成型別。

inputvertextype

則定義了輸入頂點的自定義型別

其中primitivetype種類有

point: 

輸入頂點為點型別

line: 

輸入頂點構成線狀.

********: 

輸入頂點構成三角形.

lineadj: 

帶有鄰接資訊的頂點構成線狀.

********adj:

帶有鄰接資訊的頂點構成三角形.

inout streamoutputobjectoutputname

則定義了輸出的的頂點,streamoutputobject

是頂點輸出的構成型別,

outputvetextype

是頂點的自定義輸出型別。

streamoutputobject則有型別:

pointstream

,linestream

,********stream.

分別為點,線,三角形。

以下為hlsl

**:struct gsps_input ;

[maxvertexcount(12)]

void gs( ******** gsps_input input[3], inout ********streamtristream )

for( int i=2; i>=0; i-- )

tristream.restartstrip(); }

這段**是根據輸入的三個頂點輸出乙個金字塔。

首先根據任意2

個頂點為邊外加中心頂點構成

3個三角形,再根據本身的三個頂點構成乙個底部三角形。

函式為給輸出頂點序列中新增乙個頂點,

restartstrip

則重新開始輸出頂點的序列,比如三角形頂點序列呼叫此函式重新開始三角形序列的計算。

以上就是幾何著色器的簡單應用。

DX12 混合和幾何著色器

第十章及第十二章 混合兩步即可實現 首先建立乙個pipeline stage d3d12 graphics pipeline state desc transparentpsodesc opaquepsodesc d3d12 render target blend desc transparency...

three中的著色器示例

其實在3d引擎 庫的幫助下,我們做webgl開發的難度已經很大大地降低了,熟悉相關api的話,開發乙個簡單的3d程式可以說是很輕鬆的事情。在我看來,webgl的核心就是著色器 頂點著色器 片元著色器 這兩者決定了如何在螢幕上繪製出我們想要的效果。所以,無論你是剛入門的3d開發者 我也是剛剛探索3d領...

DX11渲染管道 著色器的編譯和建立

在不使用效果框架的時候,整個渲染管道其實挺簡單的,建立資源,輸入資源。編譯著色器輸入著色器,其實著色器本身也是一種資料,只不過這個資料描述的是邏輯。最後呼叫一下draw方法畫一下就ok 了。這裡說說著色器的編譯和建立,很簡單。d3dx11compilefromfile hresult d3dx11c...