OpenGL之常见的专业名词解析
生活随笔
收集整理的這篇文章主要介紹了
OpenGL之常见的专业名词解析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
狀態(tài)機
- 狀態(tài)機可以理解為一臺可以保存狀態(tài),并根據(jù)當(dāng)前狀態(tài)進行相應(yīng)輸出的機器,也可以理解為就是一種存在于理論中的機器;
- 首先,它有記憶的能力,能夠記住自己當(dāng)前的狀態(tài)。(電腦的存儲器(內(nèi)存、硬盤等),可以記住電腦自己當(dāng)前的狀態(tài)(當(dāng)前安裝在電腦中的軟件、保存在電腦中的數(shù)據(jù),其實都是二進制的值,都屬于當(dāng)前的狀態(tài)),狀態(tài)機就相當(dāng)于這里的電腦,類似于這樣的“存儲記憶”,因而OpenGL可以記錄自己的狀態(tài)(比如:當(dāng)前所使用的顏色、是否開啟了混合功能等,這些都是要記錄的));
- 其次,它可以接收輸入,根據(jù)用戶輸入的內(nèi)容和自己的狀態(tài),修改自己的狀態(tài),并且可以得到輸出。(電腦的輸入設(shè)備接收輸入(鍵盤輸入、鼠標(biāo)輸入、文件輸入),根據(jù)輸入的內(nèi)容和自己的狀態(tài)(主要指可以運行的程序代碼),修改自己的狀態(tài)(修改內(nèi)存中的值),并且可以得到輸出(將結(jié)果顯示到屏幕),OpenGL和電腦類似,也可以接收輸入(當(dāng)調(diào)用OpenGL函數(shù)的時候,可以看成OpenGL在接收輸入),根據(jù)輸入的內(nèi)容和自己的狀態(tài),修改自己的狀態(tài),并且可以得到輸出(比如當(dāng)調(diào)用glColor3f,則OpenGL接收到這個輸入后會修改自己的“當(dāng)前顏色”這個狀態(tài);當(dāng)調(diào)用glRectf,則OpenGL會輸出一個矩形));
- 最后,當(dāng)它進入某個特殊的狀態(tài)(停機狀態(tài))的時候,它不再接收輸入,停止工作。(類似于電腦關(guān)機之后,便不再接收信息,停止工作);
上下文 Context
- 保存OpenGL中各種狀態(tài)的一個龐大狀態(tài)機,記錄OpenGL渲染需要的所有信息,它是一個大的結(jié)構(gòu)體,它里面記錄了當(dāng)前繪制使用的顏色、是否有光照計算以及開啟的光源等非常多的使用OpenGL函數(shù)調(diào)用設(shè)置的狀態(tài)和狀態(tài)屬性;
- OpenGL指令執(zhí)?的基礎(chǔ),比如保存了一系列的變量用來描述OpenGL此刻需要如何運行,比如拍照時候要開啟濾鏡功能等等;
- 應(yīng)用程序中可以創(chuàng)建多個不同的上下文,分別在各自的線程中使用。上下文之間共享紋理,緩沖區(qū)等資源,采用這中方案更為高效,因為它避免了反復(fù)切換上下文,或者大量修改渲染狀態(tài)所造成的較大的開銷;
渲染(Rendering)
- 在OpenGL中,所有東西都在一個3D的空間里,而屏幕和窗口都是2D的,所以O(shè)penGL需要將3D的坐標(biāo)轉(zhuǎn)換成2D的坐標(biāo),這就是渲染(包括第一部分將3D坐標(biāo)轉(zhuǎn)換成2D坐標(biāo);第二部分把2D的坐標(biāo)轉(zhuǎn)換成實際的像素);
頂點數(shù)組 VertexArray、頂點緩沖區(qū) VertexBuffer
- 常量頂點屬性對于一個圖元的所有頂點都相同,所以對一個圖元的所有頂點只需指定一個值;
- 頂點數(shù)組指定每個頂點的屬性 ,是保存在應(yīng)用程序的地址空間 (OpenGL ES 稱為客戶空間) 的緩沖區(qū),常在內(nèi)存中;
- 頂點緩沖區(qū)(VertexBuffer)用于保存一個或多個圖元的索引,常在緩存中;初始化或者更新 緩沖區(qū)對象數(shù)據(jù)存儲之后,客戶數(shù)據(jù)存儲不再需要的,靜態(tài)的幾何圖形可以釋放客戶數(shù)據(jù)存儲,減少應(yīng)用程序消耗的內(nèi)存;
管線
- 管線包含一系列處理階段,定點數(shù)據(jù)和像素數(shù)據(jù)進入管線進行處理,最后組合到一起寫入幀緩沖區(qū);
- 渲染的過程就相當(dāng)于管線,類似于生產(chǎn)流水線;
- 主要分為固定管線(類似于API,只是參數(shù)的不同)和可編程管線(GLSL語法來驅(qū)使GPU);
著色器
- 用來處理頂點相關(guān)代碼的程序,主要作用于GPU(一個著色器類似于一個函數(shù)或者方法,但函數(shù)和方法是作用于CPU);
- 固定著色器:固定封裝的API代碼段,只是需要的參數(shù)不同;
- 頂點著色器:將頂點坐標(biāo)由自身坐標(biāo)系轉(zhuǎn)換到歸一坐標(biāo)系,是逐頂點運行的程序,即每個頂點數(shù)據(jù)都會執(zhí)行一次,確定其位置;主要用來處理圖形頂點的變換(旋轉(zhuǎn)、平移、縮放),3D圖形數(shù)據(jù)投影換算 為2D圖形數(shù)據(jù)等;
- 片元著色器:主要用于處理一個個的像素點,逐像素且在GPU并行運算,即每個像素都會執(zhí)行一次;
- 自定義著色器:進行自定義編譯的代碼片段;
GLSL
- GLSL著色語?是?來在OpenGL中著?編程的語?,是在圖形卡的GPU上執(zhí)?的,代替了固定的渲染管線的?部分,使渲染管線中不同層次具有可編程性;
光柵化
- 光柵化是將圖元轉(zhuǎn)化為一組二維片段的過程:當(dāng)渲染一個圖元時,光柵化(Rasterization)階段通常會造成比原指定頂點更多的片段。它會根據(jù)每個片段在圖元上所處相對位置決定這些片段的位置。基于這些位置,它會插值(Interpolate)所有片段著色器的輸入變量;
- 包含了兩部分的?作:一是決定窗?坐標(biāo)中的哪些整型柵格區(qū)域被基本圖元占?,二是分配一個顏?值和?個深度值到各個區(qū)域;
- 幾何圖元轉(zhuǎn)化為二維圖像,把物體的數(shù)學(xué)描述和相關(guān)的顏色信息轉(zhuǎn)換為屏幕上對應(yīng)位置的像素及填充像素顏色,將模擬信號轉(zhuǎn)換為離散信號;
紋理(Texture、位圖)
- 紋理可以理解為是一個2D圖片(甚至也有1D和3D的紋理),它可以用來添加物體的細(xì)節(jié);需要將png轉(zhuǎn)換成位圖,所以紋理又是位圖;
- 紋理也可以被用來儲存大量的數(shù)據(jù),可以發(fā)送到著色器上;
- 將平時的jpg/png圖片轉(zhuǎn)換成位圖,位圖即為紋理;
混合(Blending)
- 為了渲染出不同的透明度級別,需要開啟混合;
- 可以理解為圖層疊加的計算;
變換矩陣 (Transformation)
- 用于圖形的平移、旋轉(zhuǎn)、縮放時使用;
投影矩陣 (Projection)
- 將3D坐標(biāo)轉(zhuǎn)換為2D屏幕坐標(biāo)時使用;
渲染上屏/交換緩沖區(qū) (SwapBuffer)
- 渲染緩沖區(qū):可以理解為是系統(tǒng)的資源,例如窗口;
- 渲染上屏:將圖像直接渲染到窗口對應(yīng)的渲染緩沖區(qū);
- 顯示在屏幕上的稱為屏幕緩沖區(qū),沒有顯示的稱為離屏緩沖區(qū);在一個緩沖區(qū)渲染完成之后,通過將屏幕緩沖區(qū)和離屏緩沖區(qū)交換,實現(xiàn)圖像在屏幕上顯示;
- 為防?交換緩沖區(qū)的時候屏幕上下區(qū)域的圖像分屬于兩個不同的幀,交換一般會等待顯示器刷新完成的信號,在顯示器兩次刷新的間隔中進?交換,這個信號就被稱為垂直同步信號,這個技術(shù)被稱為垂直同步;
- 在等待垂直同步時,來回交替渲染兩個離屏的緩沖區(qū),?垂直同步發(fā)生時,屏幕緩沖區(qū)和最近渲染完成的離屏緩沖區(qū)交換,實現(xiàn)充分利?硬件性能的?的。
總結(jié)
以上是生活随笔為你收集整理的OpenGL之常见的专业名词解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL之macOS上的环境搭建
- 下一篇: OpenGL之深入解析坐标系