Affichage de 100 cubes flottants Utilisation de DirectX ou OpenGL

voix
13

Je voudrais afficher 100 cubes flottants en utilisant DirectXou OpenGL.

Je cherche soit un code source exemple, ou une description de la technique. J'ai du mal à obtenir plus d'un cube pour afficher correctement.

J'ai épluché le net pour une bonne série de tutoriels et bien qu'ils parlent de la façon de faire des 3Dprimitives, ce que je ne peux pas trouver est l' information sur la façon de faire un grand nombre de 3Dprimitives - cubes, spheres, pyramidset ainsi de suite.

Créé 04/08/2008 à 07:51
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
7

Vous dites que vous avez assez du mal à obtenir un cube à afficher ... donc je ne sais pas si vous en avez un pour afficher ou non.

En gros ... mettre votre code pour écrire un cube dans une fonction, il suffit d'appeler 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();
         }
    }              
}

Ce sont les grandes lignes de base pour savoir comment vous pouvez aller sur le faire. Si vous voulez quelque chose de plus efficace de prendre un coup d'oeil dans les listes d'affichage quelque temps une fois que vous avez les bases cernées :)

Créé 04/08/2008 à 10:12
source utilisateur

voix
6

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

Ecrire une passe de base par vertex shader, nuance cependant que vous désirez dans le pixel shader. Soit passer dans une matrice mondiale et faire la traduction dans le vertex shader, ou calculer simplement les positions des sommets de l'espace du monde du côté de l'unité centrale de traitement (faire si vos cubes vont rester fixe).

Vous pouvez obtenir la fantaisie et faire instanciation la géométrie etc, mais juste obtenir les bases en premier.

Créé 19/08/2008 à 12:12
source utilisateur

voix
6

Il suffit d'utiliser glTranslatef (ou l'équivalent DirectX) pour dessiner un cube en utilisant le même code, mais en déplaçant le point relatif où vous dessinez. Peut-être qu'il ya une meilleure façon de le faire bien, je suis assez nouveau pour OpenGL. Assurez-vous de définir votre point de vue afin que vous puissiez les voir tous.

Créé 04/08/2008 à 10:04
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more