最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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:著色器的評論 (共 條)

分享到微博請遵守國家法律
特克斯县| 新建县| 鸡东县| 临安市| 泽普县| 贵阳市| 沈丘县| 台山市| 高淳县| 宝清县| 宁明县| 泗阳县| 涿州市| 璧山县| 六盘水市| 南充市| 卓资县| 江阴市| 滨州市| 宝清县| 三原县| 长子县| 崇左市| 台湾省| 织金县| 红原县| 大新县| 民和| 瓮安县| 唐海县| 渝中区| 加查县| 理塘县| 灵武市| 区。| 光泽县| 阿瓦提县| 石渠县| 孝昌县| 大悟县| 湖州市|