无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

OpenGL實例教程04:著色器

2023-02-16 11:36 作者:阿西拜-江西  | 我要投稿

什么是著色器?

著色器(Shader)是用來實現(xiàn)圖像渲染的,用來替代固定渲染管線的可編輯程序。

OpenGL可編程管線的大致流程

頂點處理器負責(zé)(對通過流水線的每個頂點)執(zhí)行頂點著色器。頂點的數(shù)量由調(diào)用draw時的參數(shù)決定。頂點著色器不知道被渲染基元的拓撲結(jié)構(gòu)。此外,不能在頂點處理器中丟棄頂點。每個頂點只進入頂點處理器一次,經(jīng)過變換后繼續(xù)向下傳遞。

幾何處理器:即幾何圖形處理器,負責(zé)執(zhí)行幾何著色器,輸入是一個圖元的一組頂點幾何著色器可以改變圖形的拓撲結(jié)構(gòu),即就是將一個圖元變換為另一個完全不同的圖元(例如:改變頂點數(shù)量),或者修改圖元的位置。

裁剪器:它將圖元剪切到標準化框(-1,1之間的立方體)中。它還將它們剪切到近Z和遠Z面(離“攝像頭”太近,或太遠的地方)。還支持自定義裁剪面。

光柵器在裁剪器中幸存的頂點將映射到屏幕空間坐標。光柵化器根據(jù)它們的拓撲將它們渲染到屏幕上。例如,對于三角形來說,這意味著找出所有在三角形內(nèi)的像素。對于每個三角形內(nèi)的像素,光柵化器調(diào)用片段處理器(負責(zé)執(zhí)行片段著色器。在這里,你可以選擇通過從紋理中采樣或使用任何你想要的技術(shù)來確定像素的顏色。

C++ 源碼中的著色器管理(OpenGL API調(diào)用)

著色器與C/?C++程序非常相似,生成一個在GPU上運行的著色器程序,就是創(chuàng)建一條虛擬的流水線:

  • 首先,編寫著色器文本,并在程序中使用它(將文本包含在源代碼本身的字符數(shù)組中,或者通過外部文本文件加載到字符數(shù)組中)。

  • 然后一個接一個地將著色器編譯成著色器對象。

  • 之后,將這些著色器鏈對象接到單個程序中,并將其加載到GPU中。

著色器源碼

著色器的編寫采用的是GLSL(GL Shading Language),類似C語言。生成的程序?qū)⒃趫D形卡的GPU (Graphic Processor Unit圖形處理單元)上執(zhí)行。

  • 頂點著色器

    頂點著色器是流水線上的第一道工序,主要負責(zé)導(dǎo)入并處理頂點數(shù)據(jù)。

  • 片段著色器

    片段著色器的工作是確定片段(像素)的顏色。


C++ 代碼展示:

運行效果:


OpenGL實例教程04:著色器的評論 (共 條)

分享到微博請遵守國家法律
鄂托克前旗| 巨鹿县| 汉川市| 沙河市| 延川县| 双辽市| 阳原县| 沙洋县| 平凉市| 黄冈市| 宁波市| 长宁县| 万山特区| 陇西县| 酒泉市| 宜春市| 永济市| 镇江市| 巩留县| 上饶县| 额敏县| 福州市| 格尔木市| 蒙阴县| 灵武市| 罗源县| 甘洛县| 嘉定区| 徐闻县| 财经| 通许县| 河东区| 含山县| 广汉市| 景谷| 锡林浩特市| 新建县| 县级市| 嘉峪关市| 河间市| 建平县|