OpenGL-缓冲区,着色器

OpenGL-缓冲区,着色器,opengl,graphics,rendering,Opengl,Graphics,Rendering,每次我在谷歌上搜索有关OpenGL编程的文章,我都会找到,但似乎所有的文章都提到了着色器和缓冲区。那些是什么? 你能解释一下其中的一些吗 深度缓冲器 模板缓冲区 像素着色器 帧缓冲区 我只听了几个,但找不到完整的名单。什么是OpenGL中的着色器,什么是缓冲区?当我们使用它们时,有人能提供一些例子吗?在google中输入opengl着色器,你就可以得到着色器的答案了 第一个搜索结果: 要更直接地列出每个着色器,也请单击此处的链接: 对于OpenGL,使用GLSL编程着色器,使用HLSL

每次我在谷歌上搜索有关OpenGL编程的文章,我都会找到,但似乎所有的文章都提到了着色器和缓冲区。那些是什么? 你能解释一下其中的一些吗

  • 深度缓冲器
  • 模板缓冲区
  • 像素着色器
  • 帧缓冲区

我只听了几个,但找不到完整的名单。什么是OpenGL中的着色器,什么是缓冲区?当我们使用它们时,有人能提供一些例子吗?

在google中输入
opengl着色器
,你就可以得到着色器的答案了

第一个搜索结果:

要更直接地列出每个着色器,也请单击此处的链接:

对于OpenGL,使用GLSL编程着色器,使用HLSL编程Direct3D

这应该作为一般性的介绍

另一方面的一些简要说明(可能是简化):

深度缓冲区,也称为z缓冲区,用于解决渲染时隐藏内容的问题

帧缓冲区就是存储当前帧(屏幕/像素)的存储器

模具缓冲区有点复杂,可以以几种不同的方式使用

出于介绍的目的,谷歌的第一次点击(维基百科)在以下方面为您提供了很好的服务:


etc

颜色缓冲区是一块具有指定内存布局的内部内存,但对表示图像的用户来说或多或少是不透明的。它保存图像中每个像素的颜色信息。将绘制/渲染到颜色缓冲区中。在最新的硬件上,OpenGL的最新版本可能不止一个颜色缓冲区,您可以使用它来提高某些特殊渲染技术的效率

深度和模具缓冲区与颜色缓冲区相同,只是它们保存(顾名思义)深度和模具信息,而不是颜色。深度和模具通常组合到一个缓冲区中(但不需要),一次不能有多个深度/模具缓冲区。
深度缓冲区通常用于在没有特定顺序渲染多个对象时解决过度渲染的模糊性。只有一块离“你的眼睛”最近的碎片幸存下来。模具缓冲区可用于特殊效果,例如屏蔽缓冲区的区域

帧缓冲区是一种可以附加颜色缓冲区并绘制/渲染到其中的东西,它可以在屏幕上显示。始终至少有一个帧缓冲区,这是您在屏幕上看到的,但可能有任意数量的帧缓冲区。这是由帧缓冲区扩展管理的,它是3.0版以来的核心功能。帧缓冲区通常也有单独的“前”和“后”缓冲区。当您渲染另一个时,其中一个将显示给您。在适当的时候,缓冲区会翻转,因此您不会看到闪烁

着色器通常是一个“程序”,OpenGL代表您在其管道中对定义良好的数据在定义良好的时间执行该程序,以生成所需的效果。它通常在图形卡上运行,但也可能部分或全部在CPU上执行。
像素着色器,历史上第一个可用的着色器(和命名器)对每个片段运行一次。它们接受一些定义的输入(例如灯光位置、法线),并生成一个单独的输出,该输出随后经过深度测试,最后写入颜色缓冲区或与颜色缓冲区混合。
顶点、几何体或细分着色器并不真正“着色”任何东西(它们变换和/或生成顶点和基本体,这些顶点和基本体随后会变成碎片),但它们继承名称