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

Translate

我想使用显示100个浮动立方体DirectX要么OpenGL.

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

我在网上整理了一系列不错的教程,尽管他们都在谈论如何做。3D原语,我找不到的是有关如何执行大量3D原语-cubes, spheres, pyramids等等。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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

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

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

来源
Translate

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

来源
Translate

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

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

你可能会喜欢上几何实例化等等,但只要先掌握基础知识即可。

来源