OpenGL入门第二课:来左边跟我一起画个”龙“
创建窗口在画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有意将这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。有一些库已经提供了我们所需的功能,其中一部分是特别针对OpenGL的。这些库节省了我们书写操作系统相关代码的时间,提供给我们一个窗口和一个OpenGL上下文用来渲染。最流行的几个库有GLUT,SDL,SFML和GLFW。
GLAD和GLFW
GLFW:创建窗口、处理输入(键盘鼠标)、管理 OpenGL 上下文的库。
GLAD:加载 OpenGL 的函数指针(加载器/绑定器),能调用 OpenGL 的函数。。
GLFWGLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入,
CMakeCMake是一个工程文件生成工具。我们从GLFW源码创建一个Visual Studio 2019工程文件,之后进行编译。
在 ...
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像素输出。图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。所有这些阶段都是高度专 ...
OpenGL入门第一课:它的核心思维,不是函数,而是状态
OpenGL是什么凡人的误解:一般它被认为是一个API(Application Programming Interface),即应用程序编程接口,包含了一系列可以操作图形、图像的函数。真实的理解:他仅仅是一个由Khronos组织制定并维护的规范(Specification)。OpenGL严格规范了每个函数该如何执行,以及他们的输出值。至于内部的实现,是OpenGL开发者自由发挥的。因此OpenGL给开发者的自由度实际上是很高的,只要遵循他的龟范,即函数的功能和返回值,剩下的FreeStyle。实际上的OpenGL库基本都是生产显卡的厂商开发的,普及一个常识,当显示产生BUG的时候通常都会通过升级显卡驱动来解决,这些驱动会让你的显卡支持最新版本的OpenGL,这也是为什么总是建议更新显卡驱动。
核心模式与立即渲染模式早期的OpenGL采用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。但是提供方便的同时肯定是包装过度,牺牲了一部分的自由度。随着时间的推移,规范越来越灵活,开发者对绘图细节有了更多的掌握。因此从OpenGL3.2开始,规范文档 ...
正则表达式
语法
字符
描述
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\”匹配“\”而“(”则匹配“(”。
^
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^也匹配“\n”或“\r”之后的位置。
$
匹配输入字符串的结束位置。如果设置了 RegExp 对象的 Multiline 属性,$也匹配“\n”或“\r”之前的位置。
*
匹配前面的子表达式零次或多次。例如,zo能匹配“z”以及“zoo”。等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n}
n 是一个非负整数。匹配确定的 n 次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个 o。
{ ...


