2012-06-15 183 views
2

每次我在谷歌搜索有關的OpenGL編程,我發現的文章,但似乎都是提着色器和緩衝器。那些是什麼? 你能解釋其中的一些:OpenGL的 - 緩衝區,着色

  • 深度緩衝
  • 模板緩存
  • 像素着色器
  • 幀緩衝
  • ...?

我聽到他們幾個也沒有找到完整列表。什麼是OpenGL中的着色器,什麼是緩衝區?有人可以在我們使用它們時提供示例嗎?

回答

4

色彩緩衝器是指定內存la的一段內存yout,但對你來說或多或少不透明代表圖像。它保存有關圖像中每個像素顏色的信息。您將繪製/渲染到顏色緩衝區中。有可能比最近的硬件最新版本的OpenGL的,你可以用它進行一些特殊的渲染技術更有效的單一顏色緩衝區的更多。

深度和模板緩衝區與顏色緩衝區相同,除了它們擁有(顧名思義)深度和模板信息而不是顏色。深度和模板通常組合成一個緩衝區(但不一定是),並且一次不能有多個深度/模板緩衝區。
深度緩衝區通常用於在以特定順序呈現多個對象時解決透支不明確性。只有最接近「你的眼睛」的片段才能存活下來。模板緩衝區可用於特殊效果,例如,掩蓋緩衝區的區域。

framebuffer是您將顏色緩衝區附加到並繪製/渲染到屏幕上並可以在屏幕上顯示的任何東西。總是至少有一個幀緩衝區,這是你在屏幕上看到的,但可能有任何數量的幀緩衝區。這是由3.0以後的核心功能幀緩衝區擴展管理的。幀緩衝區通常也有獨立的「前」和「後」緩衝區。當你渲染另一個時,一個會顯示給你。在適當的時候,緩衝區被翻轉,所以你看不到閃爍。

着色器,通常是一個「程序」,OpenGL在您的管線內以良好定義的時間在良好定義的數據上執行,以產生一些預期的效果。它通常運行在圖形卡上,但也可能部分或全部在CPU上執行。
像素着色器,歷史上可用的第一個着色器(和名稱呈現器)對每個片段運行一次。它們採用一些定義的輸入(例如光照位置,法線)併產生一個稍後通過深度測試的單一輸出,並最終被寫入或混合到顏色緩衝區。頂點,幾何或鑲嵌着色器並不真正「遮蔽」任何東西(它們轉換和/或生成頂點和原語,後來變成片段),但它們繼承了名稱。

1

在google中輸入opengl shaders,你會得到實際着色器的答案。

第一個搜索結果是: http://en.wikipedia.org/wiki/GLSL

和每個着色器的更直接上市,按照鏈接有太多: http://en.wikipedia.org/wiki/Shader#Types_of_shaders

對OpenGL使用GLSL編程着色器和HLSL支持Direct3D。

這應該作爲一個總體介紹。

在其他一些快速的音符(可能是簡化):

深度緩衝,也被稱爲Z緩衝,用來解決的是什麼時,渲染什麼背後的問題。

幀緩衝器是簡單地在當前幀(屏幕/像素)被存儲在存儲器中。

模板緩衝區是一個比較複雜一點,並在幾個不同的方式使用。

對於引進的目的,網上搜尋每個(維基百科)第一命中爲你服務不錯關於這些:

http://en.wikipedia.org/wiki/Framebuffer

http://en.wikipedia.org/wiki/Stencil_buffer

http://en.wikipedia.org/wiki/Z-buffering