《OpenGL编程指南(原书第9版)》——1.3 OpenGL语法

简介: 本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第1章,第1.3节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 OpenGL语法

正如你可能已经了解的,OpenGL库中所有的函数都会以字符“gl”作为前缀,然后是一个或者多个大写字母开头的词组,以此来命名一个完整的函数(例如glBindVertexArray())。OpenGL的所有函数都是这种格式。在上面的程序中你还看到了以“glfw”开头的函数,它们来自第三方库GLFW,这是一个抽象化窗口管理和其他系统任务的开发库。与之类似,你也会看到某个名为gl3wInit()的函数,它来自于第三方库GL3W。附录A会进一步讲解这两个库的内容。
与函数命名约定类似,OpenGL库中定义的常量采用GL_COLOR的形式,如display()函数中所示。所有的常量都以GL_作为前缀,并且使用下划线来分隔单词。这些常量的定义是通过#def?ines来完成的,它们基本上都可以在OpenGL的头文件glcorearb.h和glext.h中找到。
为了能够方便地在不同的操作系统之间移植OpenGL程序,OpenGL还为函数定义了不同的数据类型,例如GLf?loat是浮点数类型,在例1.1中用它来声明vertices数组。此外,由于OpenGL是一个C语言形式的库,因此它不能使用函数的重载来处理不同类型的数据,此时它使用函数名称的细微变化来管理实现同一类功能的函数集。举例来说,我们会在第2章遇到一个名为glUniform()的函数,它有多种变化形式,例如glUniform2f()和glUniform3fv()。在函数名称的“核心”部分之后,我们通过后缀的变化来提示函数应当传入的参数。例如,glUniform2f()中的“2”表示这个函数需要传入2个参数值(由于还可能会传入其他的参数,因此一共定义了24种不同的glUniform()函数—在本书中,我们使用glUniform()来统一表示所有glUniform*()函数的集合)。我们还要注意“2”之后的“f”。这个字符表示这两个参数都是GLf?loat类型的。最后,有些类型的函数名称末尾会有一个“v”,它是vector的缩写,即表示我们需要用一个一维的GLf?loat数组来传入2个浮点数值(对于glUniform2fv()而言),而不是两个独立的参数值。
表1-1所示为所有可以作为后缀的字母,以及它们所对应的数据类型。
image

使用C语言的数据类型来直接表示OpenGL数据类型时,因为OpenGL自身的实现不同,可能会造成类型不匹配。如果直接在应用程序中使用OpenGL定义的数据类型,那么当需要在不同的OpenGL实现之间移植自己的代码时,就不会产生数据类型不匹配的问题了。

相关文章
OpenGL学习笔记(二):OpenGL语法、渲染管线以及具体实现过程详解
OpenGL学习笔记(二):OpenGL语法、渲染管线以及具体实现过程详解
OpenGL学习笔记(二):OpenGL语法、渲染管线以及具体实现过程详解
|
缓存 图形学
《OpenGL编程指南(原书第9版)》——导读
OpenGL图形系统是图形硬件的一种软件接口(GL表示Graphics Library,即图形库)。它使得用户可以创建交互式的程序以产生运动的三维对象的颜色图像。通过OpenGL,我们可以使用计算机图形学技术产生逼真的图像,或者通过一些虚构的方式产生虚拟的图像。
2967 0
|
前端开发 API
《OpenGL编程指南(原书第9版)》——2.8 SPIR-V
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第2章,第2.8节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
5246 0
|
编译器
OpenGL ES着色器代码语法
因为着色器里面没有编译器提示, 所以熟悉着色器代码语法是非常有必要的
193 0
|
存储 缓存 索引
《OpenGL编程指南(原书第9版)》——3.4 OpenGL的绘制命令
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第3章,第3.4节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2369 0
|
存储 缓存 数据格式
《OpenGL编程指南(原书第9版)》——3.3 顶点规范
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第3章,第3.3节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1441 0
|
存储 缓存
《OpenGL编程指南(原书第9版)》——3.2 OpenGL缓存数据
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第3章,第3.1节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1725 0
《OpenGL编程指南(原书第9版)》——3.1 OpenGL图元
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第3章,第3.1节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1715 0
《OpenGL编程指南(原书第9版)》——第3章 3.0OpenGL绘制方式
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第3章,第3.0节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1523 0