2012-06-15 187 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