OpenGL 三角形要点总结
OpenGL 三角形
三个单词:
顶点数组对象:Vertex Array Object,VAO
顶点缓冲对象:Vertex Buffer Object,VBO
索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO
OpenGL中,任何事物都在3D空间中,屏幕和窗口却是2D像素数组,导致OpenGL的大部分工作都是关于把3D坐标转变为屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。
图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。
图形渲染管线接受一组3D坐标,然后把它们转变为你屏幕上的有色2D像素输出。
图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。
我们以数组的形式传递3个3D坐标作为图形渲染管线的输入,用来表示一个三角形,这个数组叫做顶点数据(Vertex Data);顶点数据是一系列顶点的集合。
一个顶点(Vertex)是一个3D坐标的数据的集合。
图形渲染管线的第一个部分是顶点着色器(Vertex Shader),它把一个单独的顶点作为输入。
顶点着色器主要的目的是把3D坐标转为另一种3D坐标,同时顶点着色器允许我们对顶点属性进行一些基本处理。
OpenGL仅当3D坐标在3个轴(x、y和z)上都为-1.0到1.0的范围内时才处理它。
顶点缓冲对象是一个OpenGL对象。就像OpenGL中的其它对象,这个缓冲有一个唯一的ID,可以使用glGenBuffers函数和一个缓冲ID生成一个VBO对象:
unsigned int VBO;
glGenBuffers(1, &VBO);
OpenGL有很多缓冲对象类型,顶点缓冲对象的缓冲类型是GL_ARRAY_BUFFER。
OpenGL提供了glDrawArrays函数,它使用当前激活的着色器,之前定义的顶点属性配置,和VBO的顶点数据(通过VAO间接绑定)来绘制图元。
glDrawArrays函数第一个参数是打算绘制的OpenGL图元的类型。
希望绘制一个三角形,传递GL_TRIANGLES给它。
第二个参数指定了顶点数组的起始索引,一般填0。
最后一个参数指定打算绘制多少个顶点,三角形是3。
参考:
https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/
总结
以上是生活随笔为你收集整理的OpenGL 三角形要点总结的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: C# OpenGL 环境配置和入门程序
- 下一篇: 超图js版本在地图上使用图标标记地理点