每次我在谷歌上搜索有关OpenGL编程的内容时,我都会发现一些文章,但似乎都提到了着色器和缓冲区。那些是什么?你能解释一下其中的一些:
buffer
我听说的很少,但找不到完整的名单。OpenGL中的着色器是什么,缓冲区是什么?当我们使用它们时,有人能提供例子吗?
发布于 2012-06-15 12:41:47
颜色缓冲区是具有指定内存布局的内部内存,但对于表示图像的您来说则或多或少是不透明的。它保存有关图像中每个像素的颜色的信息。在彩色缓冲区中绘制/渲染。在最近的硬件上,可以有多个带有最新版本的OpenGL的单一颜色缓冲区,您可以使用这些缓冲区来提高一些特殊的渲染技术的效率。
深度和模板缓冲区与颜色缓冲区相同,除非它们保存(顾名思义)深度和模板信息,而不是颜色。深度和模板通常合并到一个缓冲区中(但不必是这样),而且每次都不能有一个以上的深度/模板缓冲区。
深度缓冲区通常用于解决不按特定顺序呈现多个对象时的透支歧义。只有最接近“你的眼睛”的片段存活下来。模板缓冲器可用于特殊效果,例如屏蔽缓冲区的区域。
框架缓冲区是将颜色缓冲区附加到并绘制/呈现到其中,并且在屏幕上可选地可见的东西。总是至少有一个帧缓冲区,这是您在屏幕上看到的,但可能有很多。这是由framebuffer扩展管理的,该扩展是3.0版本以来的核心功能。一个框架缓冲区通常有单独的“前端”和“后”缓冲区。一个会展示给你,而你会呈现给另一个。在适当的时候,缓冲区是翻转的,所以你不会看到闪烁。
着色器,最一般的,是一个“程序”,OpenGL执行代表您在其管道内,在明确的时间,对明确的数据,以产生一些想要的效果。它通常在显卡上运行,但也可以部分或全部在CPU上执行。
像素着色器,第一个着色器历史上可用的(和命名者)是运行一次的每一个片段。它们接受一些定义的输入(例如,光位置、法线)并产生一个输出,随后经过深度测试,最后写入或混合到颜色缓冲器中。
顶点、几何图形或镶嵌着色器并不真正“遮荫”任何东西(它们转换和/或生成顶点和原语,这些顶点和原语后来被转换成片段),但它们继承了名称。
发布于 2012-06-15 12:30:51
在google中输入opengl shaders,你就可以得到着色器的答案。
第一个搜索结果:http://en.wikipedia.org/wiki/GLSL
要获得更多的每个着色器的直接列表,也可以按照下面的链接:http://en.wikipedia.org/wiki/Shader#Types_of_shaders
对于OpenGL,您可以使用GLSL编程着色器,而HLSL用于Direct3D。
这应作为一般性介绍。
关于另一个问题的一些简短说明(可能是简化):
深度缓冲区,也称为z-缓冲区,用于解决呈现时什么是背后的问题。
帧缓冲区就是存储当前帧(屏幕/像素)的内存。
模板缓冲区比较复杂,可以用几种不同的方式使用。
为了便于介绍,googles首次点击每个网站(维基百科)在以下方面为您提供了很好的服务:
http://en.wikipedia.org/wiki/Framebuffer
http://en.wikipedia.org/wiki/Stencil_buffer
http://en.wikipedia.org/wiki/Z-buffering
等
https://stackoverflow.com/questions/11050481
复制相似问题