WebGL著色器discard捨棄片元

2021-09-29 20:43:58 字數 909 閱讀 3920

本文是webgl電子書的2.15節內容

discard關鍵字通常出現在片元著色器的if語句或for語句中,discard的使用語法就像for語句中的continuebreak關鍵字一樣,直接編寫discard;即可,但是discard的功能比較特殊,專門用於著色器片元處理。

如果想理解discard,你首先應該建立逐片元的概念。gpu的片元著色器在逐個處理片元的過程中,會把不符合程式條件的**捨棄掉。

//點繪製模式

gl.drawarrays

(gl.

points,0

,4);

"vertexshader"

type

="x-shader/x-vertex"

>

//attribute宣告vec4型別變數apos

attribute vec4 apos;

void

main()

script

>

"fragmentshader"

type

="x-shader/x-fragment"

>

precision lowp float;

// 所有float型別資料的精度是lowp

void

main()

gl_fragcolor =

vec4

(1.0

,0.0

,0.0

,1.0);

}script

>

webgl學習 著色器

著色器是一段使用glsl語言 一種類c的高階語言 編寫的簡短程式,它定義了3d物件的畫素點實際繪製到螢幕上的方式,webgl要求開發者要為每個待繪製的物件提供乙個著色器,乙個著色器可以應用於多個物件,因此在實際的應用中,整個場景通常提供乙個統一的 著色器。乙個著色器,通常由兩個部分組成 頂點著色器 ...

建立WebGL著色器程式

既然是高階,我們就要先從基礎入手,那麼先看一下如何建立乙個webgl的著色器程式 初始化著色器程式外掛程式 initshaders.js function initshaders gl,vertexshaderid,fragmentshaderid else var fragelem documen...

一 WebGL 著色器和繪製

var vshader source void main 型別和變數名字 var fshader source void main param mode 繪製模式 gl.points,gl.lines,gl.line strip,gl.line loop param first 從哪個點開始繪製 p...