【问题标题】:c++ Opengl handle elements drawnc++ Opengl句柄元素绘制
【发布时间】:2015-12-17 23:31:03
【问题描述】:

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

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    你有一个显示列表,非常好。所以现在你又回到了使用常规语言原语来简单地调用该函数。

    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 不是你的状态守护者。它只是绘制你告诉它的东西,你负责保存你的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多