zoukankan      html  css  js  c++  java
  • [OpenGL学习笔记] 初学图形渲染管线

    图形渲染管线 (Graphics Pipeline)

    实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程

    第一部分把你的3D坐标转换为2D坐标,

    第二部分是把2D坐标转变为实际的有颜色的像素

     顶点着色器: 把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标(后面会解释),同时顶点着色器允许我们对顶点属性进行一些基本处理

    图元装配: 将顶点着色器输出的所有顶点作为输入(如果是GL_POINTS,那么就是一个顶点),并所有的点装配成指定图元的形状

    几何着色器: 图元装配阶段的输出会传递给几何着色器, 几何着色器把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状

    光栅化阶段: 几何着色器的输出会被传入光栅化阶段, 把图元映射为最终屏幕上相应的像素,生成供片段着色器(Fragment Shader)使用的片段(Fragment)。在片段着色器运行之前会执行裁切(Clipping)。裁切会丢弃超出你的视图以外的所有像素,用来提升执行效率

    片段着色器: 计算一个像素的最终颜色,这也是所有OpenGL高级效果产生的地方。通常,片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),这些数据可以被用来计算最终像素的颜色

    Alpha测试和混合(Blending)阶段: 检测片段的对应的深度(和模板(Stencil))值(后面会讲),用它们来判断这个像素是其它物体的前面还是后面,决定是否应该丢弃。这个阶段也会检查alpha值(alpha值定义了一个物体的透明度)并对物体进行混合(Blend)。所以,即使在片段着色器中计算出来了一个像素输出的颜色,在渲染多个三角形的时候最后的像素颜色也可能完全不同

    在现代OpenGL中,我们必须定义至少一个顶点着色器和一个片段着色器(因为GPU中没有默认的顶点/片段着色器)

    相关拓展:

    LearnOpenGL - Hello Triangleicon-default.png?t=LA92https://learnopengl.com/Getting-started/Hello-Triangle

    图形渲染管线工作过程简述(基于OpenGL) - 知乎 (zhihu.com)icon-default.png?t=LA92https://zhuanlan.zhihu.com/p/133763724西川善司的3D图形技术概念和渲染管线的处理_smsmn的专栏-CSDN博客_西川善司icon-default.png?t=LA92https://blog.csdn.net/smsmn/article/details/19158673

  • 相关阅读:
    JAVA日报
    JAVA日报
    JAVA日报
    论文爬取(四)
    论文爬取(三)
    论文爬取(二)
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/Knight02/p/15799021.html
Copyright © 2011-2022 走看看