2011-07-11 13 views
5

Pracuję nad aplikacją OpenGL na moim laptopie. Moja aplikacja pokazuje wiele czarno-białych nierozpoznawalnych wzorów, gdy próbuję wyświetlić obraz monochromatyczny (dość duży). Mam przeczucie, że mój stary Geforce Go 7950 GTX (512 MB) jest zbyt stary dla mojej aplikacji i myślę, że problem wynikał z limitu rozmiaru obiektu bufora ramki - czy istnieje sposób, aby dowiedzieć się, co może największa FBO być?Maksymalny limit rozmiaru obiektu OpenGL FrameBuffer Object?

+1

Możesz użyć [gDebugger] (http://www.gremedy.com/download.php) (to nic nie kosztuje), aby usunąć takie problemy. –

Odpowiedz

7

Nie ma maksymalnego limitu rozmiaru bufora ramki w OpenGL. Limit to największa tekstura lub bufor renderowania, który można do niego dołączyć.

Istnieje jednak maksymalny rozmiar widocznego obszaru, otrzymujemy go za pomocą GL_MAX_VIEWPORT_DIMS, jednak zgodnie ze specyfikacjami OpenGL, okno podglądu jest w milczeniu zaciśnięte w maksymalnym rozmiarze i nie powinno powodować problemów. https://www.opengl.org/sdk/docs/man/html/glViewport.xhtml

+0

jako uwaga o wielkości: wartość 'GL_MAX_VIEWPORT_DIMS' nie musi być POT (zwykle * jest * na komputerach, ale np. Mam 3839 x 3839 na NVIDIA Tegra 3), ale na niektórych platformach (OpenGL ES na telefony komórkowe) za pomocą tekstur NPOT (lub nawet nieprostokątnych tekstur POT) mogą i będą powodować kłopoty - dlatego radziłbym, aby uzyskać najbliższą wartość POT niższą od większej z dwóch (max H/W, np. dla T3 będzie to 2048) i użyjemy go jako górnej granicy zarówno H & W tworzonego FBO. Naprawiłem niejasny błąd "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", który otrzymywałem. – vaxquis

3
GLuint dims[2]; 
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &dims[0]); 

To daje maksymalną szerokość/wysokość rzutni.