代码之家  ›  专栏  ›  技术社区  ›  user2189331

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

  •  15
  • user2189331  · 技术社区  · 16 年前

    我想显示100个使用 DirectX OpenGL .

    我在寻找一些示例源代码,或者技术的描述。我无法正确显示多个立方体。

    我在网上搜索了一系列很好的教程,尽管他们都在讨论如何做。 3D 原语,我找不到关于如何做大量 三维 基元- cubes , spheres , pyramids 等等。

    3 回复  |  直到 6 年前
        1
  •  8
  •   Redbaron    16 年前

    你说你有足够的困难让一个立方体显示…所以我不确定你有没有要展示的。

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

    这是你如何做这件事的基本大纲。如果你想要更有效的东西,你可以找个时间看看显示列表,一旦你找到了一些基本的东西:)

        2
  •  7
  •   Bernard    16 年前

    只需使用gltranslatef(或相当于directx的代码)来绘制使用相同代码的多维数据集,但要移动绘制它的相对点。也许有更好的方法可以做到这一点,但我对OpenGL还比较陌生。一定要设置好你的视角,这样你才能看到所有的东西。

        3
  •  6
  •   Ali Parr    16 年前

    是的,如果你有效率的话,你会把所有的东西都放到同一个顶点缓冲区,但是我不认为画100个立方体会推动过去5年中产生的任何GPU,所以你应该按照上面的建议做。

    编写基本的“通过顶点”明暗器,在“像素”明暗器中根据需要进行着色。或者传入一个世界矩阵并在顶点着色中进行转换,或者只计算CPU端的世界空间顶点位置(如果多维数据集保持不变,则执行此操作)。

    你可以想象一下 geometry instancing 等等,但先把基本的东西做好。