使用DirectX或OpenGL显示100个浮动立方体

我想使用 DirectXOpenGL 显示100个浮动立方体。

我正在寻找一些示例源代码或技术说明。我无法让更多的多维数据集正确显示。

我已经为网络梳理了一系列优秀的教程,虽然他们讨论了如何执行 3D 原语,但是我找不到有关如何执行大量 3D primitives - cubesspherespyramids 等等。

0
额外 编辑
意见: 1

3 答案

只需使用glTranslatef(或DirectX等价物)使用相同的代码绘制立方体,但移动绘制它的相对点即可。也许有更好的方法去做,但我对OpenGL相当陌生。一定要设定你的观点,以便你可以看到他们。

0
额外

你说你有足够的麻烦让一个立方体显示......所以我不确定你是否有一个显示或不显示。

基本上...把你的代码写在一个函数中的立方体,然后调用该函数100次。

void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

这是你如何去做这件事的基本轮廓。如果你想要更有效率的东西,一旦你掌握了基本知识,就可以随时查看显示列表:)

0
额外

是的,如果你效率很高,你会把所有东西都扔到同一个顶点缓冲区中,但我不认为绘制100个立方体会推动过去5年中生产的任何GPU,所以你应该很好地遵循上述建议。

写一个基本的通过顶点着色器,然而你需要在像素着色器中进行阴影处理。无论是通过世界矩阵并在顶点着色器中进行翻译,或者只是计算CPU端的世界空间顶点位置(如果您的立方体将保持固定,请执行此操作)。

你可能会喜欢,并做几何实例等,但只是首先得到的基本知识。

0
额外