Wyświetlanie 100 Pływające Cubes Korzystanie z DirectX lub OpenGL

głosy
13

Chciałbym, aby wyświetlić 100 kostek pływających przy użyciu DirectXlub OpenGL.

Szukam albo jakiś przykładowy kod źródłowy lub opis tej techniki. Mam kłopot więcej jedną kostkę, aby wyświetlić prawidłowo.

Mam czesane netto za dobrą serię ćwiczeń i chociaż mówią o tym, jak zrobić 3Dprymitywów, co nie mogę znaleźć się informacja o tym, jak zrobić duże ilości 3Dprymitywów - cubes, spheres, pyramidsi tak dalej.

Utwórz 04/08/2008 o 07:51
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
7

Mówisz, że masz wystarczająco dużo kłopot jedną kostkę, aby wyświetlić ... więc nie jestem pewien, czy masz jeden do wyświetlania lub nie.

Zasadniczo ... umieścić swój kod do pisania sześcian w jednej funkcji, a potem po prostu zadzwonić tej funkcji 100 razy.

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

To jest podstawowy zarys na jak można to zabrać. Jeśli chcesz coś bardziej wydajne spojrzeć na wyświetlacz Listy kiedyś skoro masz podstawy zorientowali się :)

Odpowiedział 04/08/2008 o 10:12
źródło użytkownik

głosy
6

Tak, jeśli były skuteczne chcesz rzucić wszystko w tym samym buforze wierzchołków, ale nie sądzę, rysunek 100 kostek będzie naciskać żadnego GPU wyprodukowanego w ciągu ostatnich 5 lat, więc powinno być w porządku po sugestii powyżej.

Napisz podstawowy przechodzą przez cieniowania wierzchołków, cienia jednak chcecie w pixel shader. Albo przekazać w matrycy światowej i wykonać tłumaczenie w vertex shader, lub po prostu obliczyć świat pozycje wierzchołków przestrzeń po stronie procesora (to zrobić, jeśli twoje kostki zamiar pobyt stały).

Można dostać wyobraźnia i zrobić geometrii Instancing itp, ale po prostu podstawy będzie pierwszy.

Odpowiedział 19/08/2008 o 12:12
źródło użytkownik

głosy
6

Wystarczy użyć glTranslatef (lub równowartość DirectX), aby narysować sześcian przy użyciu tego samego kodu, ale ruchomy punkt względny gdzie ją wyciągnąć. Być może istnieje lepszy sposób to zrobić, chociaż jestem dość nowy OpenGL. Pamiętaj, aby ustawić swój punkt widzenia, dzięki czemu można zobaczyć je wszystkie.

Odpowiedział 04/08/2008 o 10:04
źródło użytkownik

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