我目前正在制作游戏,我想知道是否有任何方法可以处理我正在绘制的元素。例如:如果我在一个循环中绘制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);但这只适用于整个列表而不是单个对象..
答案 0 :(得分:2)
你有一个显示列表,非常好。所以现在你回到使用常规语言原语来简单地调用该函数。
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不是你的管家。它只是绘制你告诉它的内容,你负责保留你的对象。