Benutzung von ARB_texture_non_power_of_two
-
nachdem du, wie LiquidAcid es bereits sagte, das "_MIPMAP_NEAREST" entfernt hast, solltest du, falls es dann noch nicht geht, mal ein erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
-
spl@t schrieb:
(bzw. vor dem Zeichnen)
-
Ich danke Euch für eure guten Hilfen!
Jetzt geht es in der Tat. Allerdings hab ich ein echten Verständnis problem:
SDL_Surface *tex; tex = IMG_Load(filename); w=tex->w; h=tex->h; //glGenTextures(1, &TEXTURE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); GLubyte * feld = new GLubyte[MAX_SIZE*MAX_SIZE*3]; glBindTexture(GL_TEXTURE_2D, TEXTURE); gluScaleImage(GL_RGB, tex->w, tex->h, GL_UNSIGNED_BYTE, tex->pixels, MAX_SIZE, MAX_SIZE, GL_UNSIGNED_BYTE, feld); glBindTexture(GL_TEXTURE_2D, TEXTURE); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, MAX_SIZE, MAX_SIZE,0, GL_RGB, GL_UNSIGNED_BYTE, feld); SDL_FreeSurface(tex); delete[] feld;
Wie ihr seht ist glGenTextures wieder deaktiviert. Nur so geht es, fragt mich nicht warum. Schalte ich es wieder hinzu komme ich an die Texture nicht mehr heran. Ein weiteres Problem ist: Es ist ja alles schon in eine kleine Klasse verpackt:
class CTexQuad : public CQuad { private: GLuint TEXTURE; public: int w; int h; void Draw(); bool LoadTexture(char * filename); };
Ich dachte so könnte ich leicht mehrere Texturen laden, einfach mit mehreren Objekten. Erstmal, später will ich sowieso ne Liste von solchen Objektenmachen (geht doch oder
) Leider geht das wohl nicht so billig wie ich dachte. Hab ich 2 objekte diesen Typs und lade 2 Images wird prinzipiell auf dem ersten Quad die zweite TExture abgebildet, der zweite bleibt weiß. Ich vermute mal, das hat auch was mit glGenTexture(...); zu tun.
Ein weiteres Prob sind nur noch die Memberv. w und h. Ich versteh nicht wieso ist da nicht die Imagedimensionen reinbekommen, eigentlich doch total rudimentär?
zum Ende nochmal die zeichenroutine, da ist ja eigentlich (herje,wie oft ich hier schon dachte, das etwas eigentlich "s"o funktionieren müsste) auch nix besonderes:glPushMatrix(); if(w>h) { glScalef(1.333,1,1); } else(w<h) { glScalef(1,1.333,1); } glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,TEXTURE); glBegin(GL_QUADS); glColor4f(V[1].red,V[1].green,V[1].blue,V[1].alpha); glTexCoord2f(1,1); glVertex3f(V[1].x,V[1].y,V[1].z); glColor4f(V[2].red,V[2].green,V[2].blue,V[2].alpha); glTexCoord2f(0,1); glVertex3f(V[2].x,V[2].y,V[2].z); glColor4f(V[3].red,V[3].green,V[3].blue,V[3].alpha); glTexCoord2f(0,0); glVertex3f(V[3].x,V[3].y,V[3].z); glColor4f(V[4].red,V[4].green,V[4].blue,V[4].alpha); glTexCoord2f(1,0); glVertex3f(V[4].x,V[4].y,V[4].z); glEnd(); glDisable(GL_TEXTURE_2D); glLoadIdentity(); glPopMatrix();
Nicht sehr Elegant mit dem glScalef, aber das tuts erstmal.
danke
-
Wo komt in deinem Source "TEXTURE" her, wenn das alles schon in einer Klasse ist ?
-
Na TEXTURE ist doch private Member von CTexQuad
-
Setze mal TEXTURE im Ctor auf Null. Dann versuch nochmal in der Lademethode gleich nach dem glGenTexture das Binden durchzuführen (also gleich nach dem Gen).
cya
liquid
-
spl@t schrieb:
erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
-
spl@t schrieb:
spl@t schrieb:
erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
Aber klar. Wiederholen wir doch nochmal was nix bringt und jeder weiß.
-
MS_Noob schrieb:
Wie ihr seht ist glGenTextures wieder deaktiviert. Nur so geht es, fragt mich nicht warum.
debuggen, sehen ob texture den wert 0 bekommt und falls ja, sich tunlichst verkneifen texturen erstellen zu wollen, bevor man einen gl kontext hat. in dem fall sollte es zwar grundsätzlich nicht gehen, aber wer weiß, was manche treiber so anstellen.
OHNE gentextures wirds aber nicht sinnvoll funktionieren, weil besonders im debug-build alle die gleiche id hätten. die funktion macht sowieso nichts, außer eine (oder mehrere) freie id's liefern und evtl. noch eine davon zu binden (mal nicht drauf verlassen).
-
Ahvolon[F-Bytes] schrieb:
spl@t schrieb:
spl@t schrieb:
erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
Aber klar. Wiederholen wir doch nochmal was nix bringt und jeder weiß.
Begründung?
-
spl@t schrieb:
Ahvolon[F-Bytes] schrieb:
spl@t schrieb:
spl@t schrieb:
erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
Aber klar. Wiederholen wir doch nochmal was nix bringt und jeder weiß.
Begründung?
Oben schonmal geschrieben - null geholfen.
-
Ahvolon[F-Bytes] schrieb:
spl@t schrieb:
Ahvolon[F-Bytes] schrieb:
spl@t schrieb:
spl@t schrieb:
erneutes glBindTexture nach glTexImage2D versuchen (bzw. vor dem Zeichnen)
Aber klar. Wiederholen wir doch nochmal was nix bringt und jeder weiß.
Begründung?
Oben schonmal geschrieben - null geholfen.
Hättest du jetzt geschrieben : 'Macht er doch bereits', wärs ok gewesen. Das hab ich nämlich übersehen.
-
spl@t schrieb:
Hättest du jetzt geschrieben : 'Macht er doch bereits', wärs ok gewesen. Das hab ich nämlich übersehen.
Tjo, muss man die Beiträge auf die man antwortet wohl mal lesen.
-
Ahvolon[F-Bytes] schrieb:
Tjo, muss man die Beiträge auf die man antwortet wohl mal lesen.
Soweit kommt's noch!!
BTW: Worum geht's?! :p
-
Sgt. Nukem schrieb:
BTW: Worum geht's?! :p
Nicht wichtig