我想使用显示 100 个浮动立方体 DirectX 或者 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 端的世界空间顶点位置(如果您的立方体要保持固定,请执行此操作)。

你可以想像并做 几何实例化 等等,但首先要了解基础知识。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top