使用DirectX或者OpenGL显示100个浮动多维数据集

时间:2020-03-05 18:37:30  来源:igfitidea点击:

我想使用DirectX或者OpenGL显示100个浮动立方体。

我正在寻找一些示例源代码或者该技术的描述。我无法获得更多一个多维数据集以正确显示。

我已经整理了一系列好的教程,尽管他们都在谈论如何做3D图元,但是我找不到的信息是关于如何做大量3D图元立方体,球体的信息。 金字塔`等。

解决方案

回答

只需使用glTranslatef(或者DirectX等效项)使用相同的代码绘制一个多维数据集,但是将相对点移动到绘制它的位置即可。也许有更好的方法可以做到,但我对OpenGL还是很陌生。请务必设置观点,以便我们可以看到所有内容。

回答

我们说要显示一个多维数据集有很多麻烦...所以我不确定是否要显示一个多维数据集。

基本上...将用于编写多维数据集的代码放在一个函数中,然后只需调用该函数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();
         }
    }              
}

这是我们如何进行此操作的基本概述。如果我们想要更有效的方法,那么一旦掌握了基本知识,就可以在一段时间后查看"显示列表" :)

回答

是的,如果我们要提高效率,可以将所有内容都放到同一个顶点缓冲区中,但是我认为绘制100个多维数据集不会推动过去5年内生产的任何GPU,因此我们应该遵循上述建议就可以了。

编写一个基本的通过顶点着色器,然后根据需要在像素着色器中进行着色。或者传递世界矩阵并在顶点着色器中进行平移,或者只计算CPU侧的世界空间顶点位置(如果多维数据集将保持不变,请执行此操作)。

我们可能会很喜欢,可以进行几何体实例化等,但是只要先掌握基础知识即可。