Vă mulțumim pentru susținere

Afișarea a 100 de cuburi plutitoare utilizând DirectX sau OpenGL

Aș dori să afișez 100 de cuburi plutitoare utilizând DirectX sau OpenGL .

Caut fie un exemplu de cod sursă, fie o descriere a tehnicii. Am probleme în a obține mai mult un cub pentru a afișa corect.

Am combinat plasa pentru o serie bună de tutoriale și, deși vorbesc despre modul de a face primitive 3D , ceea ce nu găsesc este informații despre cum se face un număr mare de 3D primitive - cubes , sfere , piramide și așa mai departe.

0
adăugat editat

3 răspunsuri

Doar utilizați glTranslatef (sau echivalentul DirectX) pentru a desena un cub folosind același cod, dar mutați punctul relativ în care îl desenați. Poate că există o modalitate mai bună de a face acest lucru, totuși, sunt destul de nou pentru OpenGL. Asigurați-vă că ați setat punctul de vedere pentru a le putea vedea pe toate.

0
adăugat

Spui că ai suficiente probleme în a obține un cub pe care să-l afișați ... deci nu sunt sigur dacă ai unul sau nu.

Practic ... pune codul dvs. pentru a scrie un cub intr-o singura functie, atunci numiti aceasta functie de 100 de ori.

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

Aceasta este schema de bază a modului în care puteți face acest lucru. Dacă doriți ceva mai eficient, aruncați o privire în listele de afișare cândva când veți avea noțiunile de bază:

0
adăugat

Da, dacă ai fi eficiente, arunci totul în același tampon de vârf, dar nu cred că desenarea a 100 de cuburi va împinge orice GPU produs în ultimii 5 ani, deci ar trebui să fii bine urmând sugestiile de mai sus.

Scrieți o trecere de bază prin shaderul de vertex, umbra dorită în pixel shader. Fie treceți într-o matrice globală și faceți traducerea în shader-ul de vârfuri, fie doar calculați pozițiile vertexului spațiului mondial pe partea CPU (faceți acest lucru dacă cuburile dvs. vor rămâne fixe).

Ai putea să fii fantezie și să instanțierea geometriei etc, dar trebuie doar să începi principiile de bază.

0
adăugat