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

Language agnostic 使用DirectX或OpenGL显示100个浮动多维数据集,language-agnostic,opengl,3d,directx,Language Agnostic,Opengl,3d,Directx,我想使用DirectX或OpenGL显示100个浮动立方体 我正在寻找一些示例源代码,或者对该技术的描述。我无法正确显示多个多维数据集 我在网上搜索了一系列的教程,虽然他们谈到了如何制作3D原语,但我找不到的是关于如何制作大量3D原语-立方体,球体,金字塔,等等的信息。只需使用glTranslatef(或DirectX等效工具)使用相同的代码绘制立方体,但移动绘制立方体的相对点。也许有更好的方法,我对OpenGL还比较陌生。一定要设置你的视点,这样你就可以看到所有的立方体。你说你很难让一个立方体

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

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


我在网上搜索了一系列的教程,虽然他们谈到了如何制作
3D
原语,但我找不到的是关于如何制作大量
3D
原语-
立方体
球体
金字塔
,等等的信息。

只需使用glTranslatef(或DirectX等效工具)使用相同的代码绘制立方体,但移动绘制立方体的相对点。也许有更好的方法,我对OpenGL还比较陌生。一定要设置你的视点,这样你就可以看到所有的立方体。

你说你很难让一个立方体显示出来。。。所以我不确定你是否有一个可以展示

基本上。。。将用于编写多维数据集的代码放在一个函数中,然后只需调用该函数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();
         }
    }              
}
void DrawCube()
{
//绘制立方体的代码
}
void DisplayCubes()
{
对于(int i=0;i<10;++i)
{   
对于(int j=0;j<10;++j)
{
glPushMatrix();
//根据多维数据集的大小更改这些值。
//此调用可确保您的多维数据集不会绘制在彼此的上方
glTranslatef(i*5.0,j*5.0,0);
DrawCube();
glPopMatrix();
}
}              
}

这是你如何着手做这件事的基本纲要。如果你想要更高效的东西,在你掌握了基本知识后,找个时间查看一下显示列表:)

是的,如果你是高效的,你会把所有东西都放到同一个顶点缓冲区中,但我不认为绘制100个立方体会推动过去5年生产的任何GPU,因此,按照上面的建议,您应该不会有问题

编写一个基本的穿透顶点着色器,在像素着色器中按需要着色。传入世界矩阵并在顶点着色器中进行平移,或者只计算CPU端的世界空间顶点位置(如果立方体要保持固定,请执行此操作)

你可以做一些花哨的事情,但是首先要做的是基本的事情