2011-09-08 21 views
5

OpenGL newbie pytanie: czy mogę zrobić coś takiego:OpenGL: wymagana trwałość tablic wierzchołków

GLfloat vertices[] = { .... }; 
glVertexPointer(3, GL_FLOAT, 0, vertices); 
... set other stuff ... 
glDrawArrays(...); 

Jaka jest wymagana trwałość tablicy „wierzchołki”? (Innymi słowy, czy OpenGL pobierze kopię odpowiedniej części i w którym momencie?) Na przykład, czy jest w porządku, aby tablica znajdowała się na stosie, ponieważ niejawnie byłaby, czy też musi istnieć po glDrawArrays () jest nazywany?

[Na co warto, jestem specjalnie programowania dla iOS, a w momencie pracy z kodem wewnątrz metody drawFrame utworzonej w projekcie OpenGL jak ustawione domyślnie w Xcode.]

Odpowiedz

2

macierzy musi żyj do czasu, aż glDrawArrays, może zostać później zniszczony, co sugeruje, że może znajdować się na stosie.

1

Zawartość tablicy wierzchołków będą kopiowane przy każdym wywołaniu glDrawArrays/Elements i dlatego muszą istnieć jeszcze w tym momencie (dopóki nie nazywamy glDrawArrays/Elements więcej lub zmienić tablicę wierzchołków przez wywołanie gl...Pointer).

Aby rzeczywiście przechowywać dane z wierzchołków (i innych) na GPU i pozwolić kierowcy na zarządzanie pamięcią (wraz z poprawą wydajności, która nie wymaga przesyłania danych przy każdym wywołaniu wyciągu), można użyć vertex buffer objects. Po skopiowaniu danych do takiego VBO znajduje się on w pamięci GPU (lub w miejscu, w którym kierowca uważa, że ​​pasuje najlepiej) i faktycznie nie potrzebujesz już kopii procesora. Ale są to uproszczone stwierdzenia, zapoznaj się z materiałem na temat VBO, aby uzyskać więcej informacji.

+0

Hmm OK zajrzy do obiektów buforowych w pewnym momencie. Jako moja pierwsza aplikacja OpenGL, szukam niewielkiej liczby prymitywów na ekranie dla aplikacji do układania puzzli, a nie jak na razie niczego zbyt krwawiącego, ale z pewnością przyjrzę się temu, kiedy zrobię coś bardziej złożonego. –

+0

@Neil W każdym razie był raczej przeznaczony jako mała uwaga. Zawsze dobrze jest uczyć się krok po kroku. –

Powiązane problemy