Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 19:19

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Mär 08, 2005 12:11 
Offline
DGL Member

Registriert: Di Mär 08, 2005 12:00
Beiträge: 8
Hallo erstmal an alle, da ich ja neu hier bin.

Ich setzte mich seit ca. 2 Wochen jetzt mit OpenGL auseinander und versuche gerade auf dglOpenGL und glBitmap umzusteigen damit ich die gl3ds.pas nutzen kann.
Ich experimentiere gerade ein bischen mit dem neuen Texturloader herum, aber jetzt habe ich ein Problem beim verschieben von Texturen in der Texturmatrix, also dass ein Bild z.B. von Links nach rechts scrollt und dabei auf einem Quad immer wiederholt wird.
Mit den vorherigen Units die ich benutz habe(Opengl12, Textures) hat das wie im Tut erklärt alles geklappt, aber jetzt verschwimmt alles wenn ich die Textur scrolle. Es kommt mir vor als würde die Textur nicht jedesmal gelöscht sondern übermalt werden, sobald sie aus dem Bild ist.

Hier mein Code:
Code:
  1.  
  2. procedure Render;
  3. begin
  4.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  5.   glLoadIdentity;
  6.   //Hier wird später die Scene gezeichnet.
  7.   gltranslatef(0,0,-5);
  8.  
  9.   glenable(GL_TEXTURE_2D);
  10.  
  11.   glBindTexture(GL_TEXTURE_2D, tex);
  12.  
  13.   x := X + 0.002;
  14.  
  15.   glMatrixMode(gl_TEXTURE);
  16.         glLoadIdentity;
  17.         glTranslatef(0,x,0);
  18.   glMatrixMode(gl_MODELVIEW);
  19.  
  20.   glBegin(GL_QUADS);
  21.         glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  22.         glTexCoord2f(0,1); glVertex3f(-1,1,0);
  23.         glTexCoord2f(1,1); glVertex3f(1,1,0);
  24.         glTexCoord2f(1,0); glVertex3f(1,-1,0);
  25.   glEnd;
  26.  
  27.   SwapBuffers(h_DC);
  28. end;
  29.  


PS: Das Problem muss bei der glBitmap.pas liegen, denn wenn ich wieder die Textures.pas verwende klappt alles wieder einwandfrei (Nur dass dann die gl3DS nicht mehr geht, weshalb ich ja auf die glBitmap umsteigen will).

Ich hoffe ihr könnt mir meinen Fehler zeigen.


Zuletzt geändert von Ironduke am Di Mär 08, 2005 14:06, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 12:25 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
So funktioniert es, zumindest bei mir. Bitte beache, dass die Werte die für glTranslatef (wenn glMatrixMode(gl_TEXTURE); gilt) übergeben werden, sich im 0..1 befinden müssen.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 14:04 
Offline
DGL Member

Registriert: Di Mär 08, 2005 12:00
Beiträge: 8
Das hilft mir leider nicht weiter, da du in deiner Unit nicht die glBitmap.pas verwendest.

Hier hab ich noch zwei Bilder hochgeladen um mein Problem zu verdeutlichen:

Das ist der Standartzustand
Bild


Und hier in der der Texturmatrix mit gltranslatef(0.5,0,0) verschoben
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 14:07 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Der Texture Wrap Modus ist wohl auf GL_CLAMP gestellt. Mit GL_REPEAT sollte es gehen.

Code:
  1. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
  2. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 14:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Genau. Normal steht das auf GL_CLAMP_TO_EDGE.

Du kannst das auch einstellen in dem du bei den Klassen die Methode SetTextureWrap benutzt und zwar nach Möglichkeit vor dem Generieren. Sonst funktioniert es nicht.

Anhand von deinem Code denke ich aber mal, dass du die Klasse nicht benutzt. Also solltest du die Methode glBitmapSetDefaultTextureWrap benutzen. Diese werden auch ganz unten im Initializationteil der glBitmap aufgerufen. Genau wie auch andere nützliche Standardparameter. Es genügt, wenn du glBitmapSetDefaultTextureWrap vor dem Laden deiner Texturen aufrufst. Dann bekommen das alle nachfolgenden Texturen. Bei Lars Methode bekommt das nur die aktuell gebundene Textur!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 14:47 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Code:
  1.  
  2. Das hilft mir leider nicht weiter, da du in deiner Unit nicht die glBitmap.pas verwendest.
  3.  

Du solltest es dann ändern. Das sind ein paar Zeilen. :?

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 08, 2005 15:02 
Offline
DGL Member

Registriert: Di Mär 08, 2005 12:00
Beiträge: 8
Danke, es funktioniert prima.

mfg Ironduke


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]