2011-09-06 13 views
11

Mam obiekt, który jest właścicielem właściwości Texture_ID. Muszę zainicjować wartość Texture_ID w konstruktorze, więc chcę, aby wartość nie była używana przez OpenGL, aby pokazać, że tekstura nie jest jeszcze ustawiona.Jaki jest zakres identyfikatora tekstury OpenGL?

Nie wiem, czy zero (0) to dobra wartość? Jeśli istnieje zakres, który OpenGL stosuje do identyfikatorów tekstury, chcę uzyskać wartość poza tym zakresem. Dowolny pomysł?

Odpowiedz

15

0 jest wartością, której szukasz (aby reprezentować nieuzbrojony identyfikator tekstury/niestworzoną teksturę), ponieważ 0 nigdy nie jest poprawnym identyfikatorem tekstury.

+8

+1 Zobacz [tutaj] (http://www.opengl.org/sdk/docs/man/xhtml/glBindTexture.xml) "Wartość zero jest zarezerwowana do reprezentowania domyślnej tekstury dla każdego celu tekstury." – user786653

+0

@chris: czy użytkownik786653 mówi prawdę? jeśli tak, to czy muszę użyć maksymalnej wartości GLuint? – jondinham

+3

@Paul: Każdy obiekt tekstury, który utworzysz, będzie miał niezerową wartość. Jeśli w ten sposób zamierzasz używać tej klasy, zero jest całkowicie w porządku. –

2

Wolałbym zainicjować teksturę w konstruktorze. W ten sposób nigdy nie będziesz mieć obiektu w nieprawidłowym stanie.

+0

ale w moim projekcie obiekt jest inicjowany, gdy jeszcze nie ma tekstury. tylko ograniczenie projektu. na przykład: muszę pokazać kostkę z kolorami, a następnie otworzyć plik obrazu, aby uzyskać tekstury do rysowania na kostce, więc w tym przypadku, gdy w konstruktorze tekstura nie jest jeszcze znana – jondinham

+4

Konstruktory mogą być wywoływane zanim pojawi się poprawny kontekst OpenGL, który spowodowałby kilka problemów. – datenwolf

+0

@datenwolf: jeśli mam obiekt, który reprezentuje obiekt tekstury OpenGL, ten obiekt nie ma znaczenia bez kontekstu OpenGL. –

2

0 to wartość używana przez OpenGL dla własnej domyślnej tekstury. Nigdy nie zwraca tej wartości do Ciebie i możesz użyć tej wartości do sprawdzania błędów.

Chciałbym chociaż sugerować używanie -1.

+7

ID tekstury to GLuint, co oznacza "unsigned int", nie sądzę, że "-1" jest ważne. – jondinham

+3

Następnie użyj '0xffffffff'. Wciąż jest to "-1" dla CIEBIE! – Shahbaz