我想使用DirectX
或OpenGL
显示100个浮动多维数据集。
我正在寻找一些示例源代码或该技术的描述。我无法让更多的立方体正确显示。
我已经精心打造了一系列精彩的教程,虽然他们谈论了如何做3D
原语,但我找不到的是关于如何做大量3D
的信息。原语 - cubes
,spheres
,pyramids
,等等。
答案 0 :(得分:8)
你说你有足够的麻烦让一个立方体显示......所以我不确定你是否有一个显示或不显示。
基本上......把你的代码写在一个函数中,然后只调用那个函数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();
}
}
}
这是你如何做到这一点的基本大纲。如果你想要更高效的东西,一旦你弄清楚了基础知识,你可以看一下显示列表:)
答案 1 :(得分:7)
只需使用glTranslatef(或DirectX等效项)使用相同的代码绘制立方体,但移动绘制它的相对点。也许有更好的方法来做到这一点,我是OpenGL的新手。请务必设置您的观点,以便全部查看。
答案 2 :(得分:6)
是的,如果你效率很高,你会把所有东西扔到同一个顶点缓冲区中,但是我不认为绘制100个立方体会推动过去5年生产的任何GPU,所以你应该按照上面的建议做得好
通过顶点着色器编写一个基本传递,然后在像素着色器中使用阴影。传入一个世界矩阵并在顶点着色器中进行平移,或者只计算CPU侧的世界空间顶点位置(如果你的立方体将保持固定,则执行此操作)。
你可以想象并做geometry instancing等,但只是先了解基础知识。