c ++绘制了Opengl句柄元素

时间:2015-12-17 14:06:42

标签: c++ opengl

我目前正在制作游戏,我想知道是否有任何方法可以处理我正在绘制的元素。例如:如果我在一个循环中绘制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);但这只适用于整个列表而不是单个对象..

1 个答案:

答案 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不是你的管家。它只是绘制你告诉它的内容,你负责保留你的对象。