我想使用DirectX
or显示 100 个浮动立方体OpenGL
。
我正在寻找一些示例源代码或该技术的描述。我无法正确显示多个立方体。
我在网上搜索了一系列很好的教程,虽然他们谈论如何做3D
原语,但我找不到关于如何做大量3D
原语的信息 - cubes
、spheres
、pyramids
等等。
我想使用DirectX
or显示 100 个浮动立方体OpenGL
。
我正在寻找一些示例源代码或该技术的描述。我无法正确显示多个立方体。
我在网上搜索了一系列很好的教程,虽然他们谈论如何做3D
原语,但我找不到关于如何做大量3D
原语的信息 - cubes
、spheres
、pyramids
等等。
你说你很难让一个立方体显示......所以我不确定你是否有一个要显示的。
基本上...将编写多维数据集的代码放在一个函数中,然后调用该函数 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();
}
}
}
这是您如何进行此操作的基本大纲。如果您想要更有效的东西,请在了解基本知识后的某个时候查看显示列表:)
只需使用 glTranslatef(或 DirectX 等效项)使用相同的代码绘制立方体,但移动绘制它的相对点。也许有更好的方法可以做到这一点,我对 OpenGL 还很陌生。一定要设置好你的观点,这样你就可以看到它们。
是的,如果你效率很高,你会把所有东西都扔到同一个顶点缓冲区中,但我认为绘制 100 个立方体不会推动过去 5 年生产的任何 GPU,所以你应该可以按照上面的建议进行操作。
编写一个基本的通过顶点着色器,在像素着色器中随心所欲地着色。要么传入一个世界矩阵并在顶点着色器中进行平移,要么只计算 CPU 端的世界空间顶点位置(如果你的立方体要保持固定,请执行此操作)。
您可以花哨并进行几何实例化等,但首先要掌握基础知识。