关于不可知的语言:使用DirectX或OpenGL显示100个浮动多维数据集

关于不可知的语言:使用DirectX或OpenGL显示100个浮动多维数据集

Displaying 100 Floating Cubes Using DirectX OR OpenGL

我想使用DirectXOpenGL显示100个浮动多维数据集。

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

我已经整理了一系列好的教程,尽管他们都在谈论如何做3D原语,但我找不到关于如何做大量3D原语的信息-cubes,< x5>,pyramids等。


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

基本上...将用于编写多维数据集的代码放在一个函数中,然后只需调用该函数100次即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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();
         }
    }              
}

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


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


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

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

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


推荐阅读