language agnostic - Affichage de 100 cubes flottants à l'aide de DirectX OU d'OpenGL

Translate

Je souhaite afficher 100 cubes flottants en utilisantDirectXouOpenGL.

Je recherche un exemple de code source ou une description de la technique. J'ai du mal à afficher correctement plusieurs cubes.

J'ai passé au peigne fin le net pour une bonne série de tutoriels et bien qu'ils parlent de comment faire3Dprimitives, je ne trouve pas d'informations sur la façon de faire un grand nombre de3Dprimitives -cubes, spheres, pyramids, et ainsi de suite.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Vous dites que vous avez suffisamment de mal à afficher un cube ... donc je ne suis pas sûr si vous en avez un à afficher ou non.

Fondamentalement ... mettez votre code pour écrire un cube dans une fonction, puis appelez simplement cette fonction 100 fois.

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();
         }
    }              
}

C'est le schéma de base de la façon dont vous pourriez procéder. Si vous voulez quelque chose de plus efficace, jetez un œil aux listes d'affichage une fois que vous aurez compris les bases :)

La source
Translate

Utilisez simplement glTranslatef (ou l'équivalent DirectX) pour dessiner un cube en utilisant le même code, mais en déplaçant le point relatif là où vous le dessinez. Il y a peut-être une meilleure façon de le faire cependant, je suis assez nouveau sur OpenGL. Assurez-vous de définir votre point de vue afin de pouvoir tous les voir.

La source
Translate

Oui, si vous étiez efficace, vous jetteriez tout dans le même tampon de vertex, mais je ne pense pas que dessiner 100 cubes poussera n'importe quel GPU produit au cours des 5 dernières années, donc vous devriez être bien en suivant les suggestions ci-dessus.

Écrivez un passage de base à travers le vertex shader, ombrez comme vous le souhaitez dans le pixel shader. Soit vous passez dans une matrice mondiale et effectuez la traduction dans le vertex shader, soit calculez simplement les positions des sommets de l'espace monde côté CPU (faites ceci si vos cubes vont rester fixes).

Tu pourrais avoir de la fantaisie et faireinstanciation de la géométrieetc, mais commencez par les bases.

La source