我目前正在开发游戏,我想知道是否有任何方法可以处理正在绘制的元素。例如:如果我在一个循环中绘制100个多维数据集,我如何显示/隐藏15或63或n的多维数据集...我认为初始化列表中的元素会起作用,但是我没有找到它的任何属性这可能会有所帮助。
GLuint cube;
cube = glGenLists(1);
glNewList(cube,GL_COMPILE);
for(int i = -30; i < 3; i++) {
for(int j = -30; j < 3; j++) {
glPushMatrix();
glTranslatef(i*2.0,0,j * 2.0);
Dcube();
glPopMatrix();
}
}
glEndList();
//类似:glDeleteList(cube);但这仅适用于整个列表,不适用于单个对象。
最佳答案
您有一个显示列表,非常好。因此,现在您回到使用常规语言原语简单地调用该函数的位置。
std::array<bool, 100> cubes;
std::fill(cubes.begin(), cubes.end(), true);
cubes[15] = false;
cubes[63] = false;
for (bool drawCube : cubes) {
if (drawCube) {
// move a bit, perhaps using glTranslate
glCallList(cube);
}
}
OpenGL不是您的州长。它只是画出您要告诉的内容,您有责任保存您的对象。