-8

你能告诉我这段代码是用什么版本的opengl编写的吗?

//The triangles to the highest and deepest vertices:
for (j = 0; j< (PointsPerRow-1); j++)
{
    IndexVect.push_back(j);
    IndexVect.push_back(j+1);
    IndexVect.push_back((PointRows-2)*PointsPerRow);
}
IndexVect.push_back(j);
IndexVect.push_back(0);
IndexVect.push_back((PointRows-2)*PointsPerRow);

for (j = 0; j< (PointsPerRow-1); j++)
{
    IndexVect.push_back((PointRows-3)*PointsPerRow+j);
    IndexVect.push_back((PointRows-3)*PointsPerRow+j+1);
    IndexVect.push_back((PointRows-2)*PointsPerRow+1);
}
IndexVect.push_back((PointRows-3)*PointsPerRow+j);
IndexVect.push_back((PointRows-3)*PointsPerRow);
IndexVect.push_back((PointRows-2)*PointsPerRow+1);
Indices = new GLuint[IndexVect.size()];  //allocate the required memory
for (i = 0; i < IndexVect.size(); i++)
{
    Indices[i] = IndexVect[i];
}
NumIndices = IndexVect.size();
IndexVect.clear();  //no longer needed, takes only memory

}

这是一个顶点数组核心,告诉我它是在哪个版本中编写的?

4

1 回答 1

3

第一段代码没有特定的 OpenGL 版本,除了 GLuint,一切都是标准的 c++(IndexVect 看起来像 std::vector),而 GLuint 是基本数字类型(如 unsigned int、unsigned short、...)在每个 OpenGL 版本中使用。

代码没有 OpenGL 调用的原因是它只定义了 CPU 上对象的结构,它没有将数据复制到 GPU 也没有渲染任何东西。

void Display(void) { 
       glClear(GL_COLOR_BUFFER_BIT); 
       glLoadIdentity();
       glTranslatef(0.0,0.0,-4.0);
       glRotatef(yRotated, 0.0, 1.0, 0.0);
       DrawSphere();
       glFlush();
       //Finish rendering
       glutSwapBuffers(); } 

即 OpenGL <= 2.0,glLoadIdentity()、glTranslatef 和 glRotatef 方法在现已弃用的矩阵堆栈上运行。

于 2013-05-22T20:43:14.647 回答