理解一段代码从OpenGL红皮书

Understanding a piece of code from the OpenGL Red Book

本文关键字:OpenGL 代码 一段      更新时间:2023-10-16

我对OpenGL和图形编程完全陌生,所以我很快就拿起了OpenGL红皮书。我刚刚开始阅读,但我不能理解下面的代码。这可能与我不太熟悉c++枚举有关,但是我们如何在声明GLuint数组时使用NumVAOs和NumBuffers ?这不是有两个1元素的数组吗?它们这样申报有什么原因吗?

代码如下:

#include <iostream>
using namespace std;
#include "vgl.h"
#include "LoadShaders.h"
enum VAO_IDs { Triangles, NumVAOs };
enum Buffer_IDs { ArrayBuffer, NumBuffers };
enum Attrib_IDs { vPosition = 0 };
GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];
const GLuint NumVertices = 6;

这背后的想法是,以

为例

enum VAO_IDs {triangle, NumVAOs};

当你需要更多的VAO时,你可以在NumVAOs之前添加它们的id,这将导致NumVAOs始终具有你正在使用的VAO数量的值。

我想我不明白你为什么要这样组织你的代码,但也许在后面的书中会变得清晰。