我对OpenGL和图形编程一般都是新手,所以我很快就拿起了OpenGL红皮书。我刚刚开始阅读,但我无法理解下面这段代码。这可能与我不熟悉C ++枚举有关,但在声明GLuint数组时我们如何使用NumVAO和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;
答案 0 :(得分:1)
这背后的想法是以例如
枚举VAO_IDs {Triangles,NumVAOs};
当你需要更多的VAO时,你需要在NumVAOs之前为它们添加id,这将使NumVAOs始终将你正在使用的VAO数量作为一个值。
以为我不明白为什么你会想要以这种方式构建你的代码,但也许这在本书的后面会变得清晰。