GLSL Core Tutorial – Primitive Assembly

原文:http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/primitive-assembly/

 

图元装配阶段把顶点shader处理后的数据作为输入,而这些顶点如何进行组合则是应用程序通过调用OpenGL函数glDraw*来指明的(图中橙色部分)。

      顶点的连接说明了顶点怎么组合成图元。图元可以是点,线,三角形或者patches。除此之外,可以提供毗邻的信息。例如,应用程序同样提供了生成邻接图元的顶点数据。这个数据只在几何shader中被使用,如何没有激活几何shader,那么这些信息将会被忽略。

    图元装配输出一些图元或者patches。例如,如何输入是六个顶点序列,连接信息指明这些顶点被连接成三角形,那么会生成2个三角形。对于三角形带来说,它会连接6个顶点,生成4个连在一起的三角形。

    在OpenGL4+, Patches是细分控制shader的输入图元类型.patch跟在上述的情况不一样,它的顶点数是不确定的,一个patch的顶点数可以从1到一个依赖于实现的常量:GL_MAX_PATCH_VERTICES。

在图形学中,一般假设生成的图元类型实例是三角形,它可以描述成下面的步骤:

 

 

下表显示了所以可能的顶点组合信息设置和生成的结果,以及使用它们的对应shader:

 

下面是一些生成点,线和三角形的案例。对于有邻接信息的图元的例子,实线表示主图元(即生成的图元),虚线连接邻接的顶点。需要注意的是在图形学上(连接)的顺序,所以图元是逆时针顺序(CCW)连接。

 

patch的几何类插值不是线性的,所以没有在这里展示。关于patches的更多信息请看细分shader部分.

时间: 2024-10-07 13:08:21

GLSL Core Tutorial – Primitive Assembly的相关文章

GLSL Core Tutorial – Vertex Shader

译自:http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/vertex-shader/ 一个顶点shader作用于一些独立的点,每个顶点操作一次.shader并不清楚其它组成图形图元的那些顶点,也没有说明作用的顶点属于哪种类型图元.对于每一个输入顶点,shader输出单一顶点(简单说就是顶点shader是逐顶点操作,作用结果还是一些顶点) 每一个顶点都有着用户定义的一些输入属性,例如:位置,法线向量,纹理坐标.顶点shader同样可以

GLSL Core Tutorial – Pipeline (OpenGL 3.2 – OpenGL 4.2)

译自:http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/ 下图简单展示了OpenGL3.2版本之后绘制的pipeline.在后面的内容将介绍pipeline的每一部分.图中插入的数字(括号里面的)指明pipeline中一些阶段需要特定OpenGL版本. 例如(4.2)表示需要OpenGL4.2的版本.

GLSL Core Tutorial – Geometry Shader

原文:http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/geometry-shader/     几何shader是OpenGL3.2之后的内容.这个阶段是可选的,当使用时,它接受在上一阶段组合的图元作为输入.一个几何shader不接受条带状,伞状或者环状的图元.几何shader接受组合后的图元,所以如何绘制命令指明是三角形带图元的话,几何shader实际上接受的是三角形.     跟顶点shader比较,几何shader完全知道正

GLSL Core Tutorial – Tessellation

原文:http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-tessellation/ 细分曲面是图形pipeline的一个阶段,这个阶段接受patches作为输入,产生可以是点,线和三角形的图元.patch是一组顶点,这些顶点属性在顶点shader被计算.细分shader接收一组变换后的顶点.例如patch,通常把它细分成更小的图元.跟其它的OpenGL图元类型相比,patches有着用户定义的顶

OpenGL book list

? Learning Modern OpenGL ? A little guide about modern OpenGL and why it gives us so much value. Shaders + Cube Env Map + Phong Lighting Introduction Ok... so you want to learn modern OpenGL. Great! But what does it really mean and what options are a

OpenGL管线(用经典管线代说着色器内部)

图形管线(graphics pipeline)向来以复杂为特点,这归结为图形任务的复杂性和挑战性.OpenGL作为图形硬件标准,是最通用的图形管线版本.本文用自顶向下的思路来简单总结OpenGL图形管线,即从最高层开始,然后逐步细化到管线图中的每个框,再进一步细化到OpenGL具体函数.注意,这里用经典管线代说着色器内部,也就是OpenGL固定管线功能(Fixed-Function,相对于programmable也即可编程着色器),也会涉及着色器,但差不多仅限于“这些固定管线功能对应xx着色器”

第4章:缓冲区、着色器、GLSL

原文链接: http://www.rastertek.com/gl40tut04.html Tutorial 4: Buffers, Shaders, and GLSL This tutorial will be the introduction to writing vertex and pixel shaders in OpenGL 4.0. It will also be the introduction to using vertex and index buffers in OpenG

【OPENGL】第三章 着色器基础(一)

在这一章,我们会学习什么是着色器(Shader),什么是着色器语言(OpenGL Shading Language-GLSL),以及着色器怎么和OpenGL程序交互. 首先我们先来看看什么叫着色器. Shader(着色器)是用来实现图像渲染的,用来替代固定渲染管线的可编程程序. 着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编程性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制.这极大的提高了图像的画质. 在上一篇文章( http://www.cnblog

CSharpGL(31)[译]OpenGL渲染管道那些事

+BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一个不错的突破口. 本文通过阅读.翻译和扩展(https://www.opengl.org/wiki/Rendering_Pipeline_Overview)的方式,来逐步回顾总结一下OpenGL渲染管道,从而串联起OpenGL的所有知识点,并期望能在更高的层次上有所领悟. 另外,(https://www.opengl.org/wiki/Rendering_