我目前正在开发游戏,我想知道是否有任何方法可以处理正在绘制的元素。例如:如果我在一个循环中绘制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不是您的州长。它只是画出您要告诉的内容,您有责任保存您的对象。

10-06 16:01