-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 に答える