PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu glGenTextures()


Abe Ghiran
2003-06-21, 18:16:24
Hoi, hoi...
Ich habe einen kleinen "TextureManager", der für mich die Abbildung Name->OpenGL texture id übernimmt. Der TextureManager läd beim starten eine Textur unknown.bmp, dessen id er immer dann zurückgibt, wenn die tatsächlich angeforderte Textur nicht geladen werden konnte.

Soweit so gut... durch puren Zufall ist mir gerade aufgefallen, das die id dieser Textur Müll ist, für alle später geladenen Texturen generiert glGenTextures funktionierende id's.
Jetzt habe ich mal das starten des TextureManagers im code hinter das anlegen des Rendercontexts gelegt und schwups, klappt das auch mit der id meiner unknown.bmp.

Nun meine Frage: ist das normal, das glGenTextures erst nach dem erstellen des RenderContexts richtig funktioniert oder ist das jetzt purer Zufall, bzw eine Eigenheit meines Treibers (Matrox Parhelia)?

Danke schon mal für alle möglichen Erklärungen (Zeckensack, i'm looking in your direction :))...

Grüße, Jan

Achill
2003-06-21, 22:21:34
ist bei mir genauso (r300) und denke verhält sich auch bei displaylisten ect. so...

eine qual. antwort würde mich aber auch interessieren ;)

im bluebook steht, zitat:
"Textur names and the corresponding texture contents are local to the shard display-list space (see glXCreateContext) of the current GL rendering context; two rendering contexts shard textures names only if they also share display lists."

ich denke also man muss immer erst den context erzeugen...

Abe Ghiran
2003-06-21, 23:28:12
Danke, das ist ja schon mal was. Dann scheint das Verhalten ja wohl normal zu sein.

Etwas OT: Das blue book habe ich selber nicht, gibt es das eigentlich irgendwo legal zum runterladen?
Falls nein, in wie weit unterscheidet es sich von dem, was man bei opengl.org unter api specification an pdf's runterladen kann?

Grüße, Jan

Xmas
2003-06-22, 03:25:57
Original geschrieben von Abe Ghiran
Nun meine Frage: ist das normal, das glGenTextures erst nach dem erstellen des RenderContexts richtig funktioniert oder ist das jetzt purer Zufall, bzw eine Eigenheit meines Treibers (Matrox Parhelia)?
Das ist absolut normal. Hintergrund dazu ist, dass du ja mehrere OpenGL-Implementationen parallel auf einem Rechner haben kannst (bzw. hast, eben den MS Software-Renderer und den Grafikkarten-ICD). Diese teilen sich aber untereinander keinerlei Informationen. Wenn du z.B. 32 Bit Z verlangst und der SW-Renderer dafür einspringt, dann bekommt natürlich der Grafikkarten-ICD von Texturen, die du dort verwendest, gar nichts mit.
Deswegen muss ein RC her, um festzuhalten mit welchem ICD dein Programm (genauer gesagt Thread) gerade kommuniziert. Ohne RC ist es nicht möglich zu entscheiden, welcher ICD die Informationen erhalten soll.

Achill
2003-06-22, 11:39:07
Ich weiss nicht ob es die "The OpenGL Programming Guide - 3rd Edition" und "OpenGL Reference Manual - 3rd Edition" irgendwo runter zu laden gibt ... hatte ein link zur 2tn Edition von "The OpenGL Programming Guide", leider ist er tot...

Ich hatte mir aber auch beide Bücher bestellt, zusammen sind sie preiswerter:

http://www.amazon.de/exec/obidos/ASIN/020177576X/028-1774960-7757314
Kostenpunkt: 95€ - ist anscheinend nur noch eins auf Lager, meine beiden haben vor einem Monat nur 85€ gekostet...

Abe Ghiran
2003-06-22, 13:12:37
Das red book habe ich schon, sowohl als pdf als auch als Buch. Runterladen konnte man das glaube ich bei Hewlett Packert (?), habe den link aber gerade auch nicht parat.
Wenn man googelt, findet man aber immer noch html Versionen davon bei diversen amerikanischen Unis.

Beim blue book dachte ich halt immer ich könnte ohne auskommen. Aber bei solchen Fragen wäre es wohl doch besser, das am Start zu haben... wenn Computerbücher nur nicht immer so teuer wären.

Auch noch mal thanx @ xmas ;).

Grüße, Jan

zeckensack
2003-06-22, 21:29:59
Da ich direkt angesprochen wurde: XMas hat die richtige Antwort bereits gegeben.
OpenGL-Kommandos kommen nur dann ans Ziel, wenn ein Kontext existiert (und 'current' ist). Das gilt nicht nur für Texturen, sondern salopp gesagt für alles was ein gl-Präfix im Namen hat.