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

Aktuelle Zeit: Fr Jul 18, 2025 08:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit glBitmap
BeitragVerfasst: Mo Mai 26, 2008 19:32 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
Hi,

ich bekomme es einfach nicht hin mit GlBitmap meine Textur zu benutzen... bestimmt übersehe ich nur eine Kleinigkeit aber ich hab nun schon Stundenlang rumprobiert und auch Threads über ähnliche Probleme durchgelesen aber meines ist irgendwie nicht dabei gewesen...

Erst hatte ich es mit der prozedualen Methode versucht allerdings wollte er patu keine TexturenID an mein glUint liefern deswegen bin ich auf die Objectorientierte Lösung umgestiegen.

Hier einmal alle dazugehörigen Funktionen:

Code:
  1.  
  2. testx1 := JQuad.create('C:\Programme\Borland\Delphi7\Projects\jump and run\test.jpg',10,10,0,0,0,0);
  3. //erzeugt quad Object mit Textur (habs vorher mit relativem Pfad / bmp / tga versucht und Textur ist power of two)
  4.  
  5. constructor JQuad.create(text : string; w, h, d, x, y, z : double);
  6. begin
  7. texture := TglBitmap2D.Create(text);
  8. texture.GenTexture;
  9. [...]
  10. end;
  11. //bist hier sollte alles richtig funktionieren da ich mir die breite der Textur ausgeben lassen kann (128px)
  12.  
  13. procedure JQuad.draw(pos : Jcoord2d);
  14. begin
  15.     glEnable(GL_TEXTURE_2D);
  16.     texture.Bind;
  17.   glBegin(GL_QUADS);
  18.     glTexCoord2f(0,0); glVertex3f(shift.x+pos.x,shift.y + pos.y,shift.z);
  19.     glTexCoord2f(0,1); glVertex3f(shift.x+pos.x,shift.y + pos.y + height,shift.z);
  20.     glTexCoord2f(1,1); glVertex3f(shift.x+pos.x+width,shift.y + pos.y + height,shift.z);
  21.     glTexCoord2f(1,0); glVertex3f(shift.x+pos.x+width,shift.y + pos.y,shift.z);
  22.   glEnd;
  23. [...]
  24. end;
  25. // habs auch schonma andersrum zu zeichnen versucht
  26.  
  27. Rendern:
  28.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  29.   glMatrixMode(GL_PROJECTION);
  30.   glLoadIdentity;
  31.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  32.   glMatrixMode(GL_MODELVIEW);
  33.   glLoadIdentity;
  34.   glTranslatef(0,0,-30);
  35.   glColor3f(1,1,1,);
  36.   [...]
  37.   glrotatef(-rotate,0,1,0);
  38.   testx1.draw(Jcoord2d.vector(3,5));
  39.   SwapBuffers(DC);
  40. // also sehen tue ich ein schwarzes 4eck das sich um sich dreht.
  41.  


Würde mich freuen wenn mir da jemand einen Tipp gibt :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 26, 2008 19:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hi,

du siehst ein schwarzes Quad? Ist es wirklich schwarz oder nur sehr dunkel? Denn so würde ich sagen der Code sieht eigentlich recht okay aus. Oder bekommst du einen Fehler? Hab das jetzt nicht so recht rauslesen können. Was passiert denn, wenn du die Textur explizit deaktivierst. glDisable(GL_TEXTURE_2D);

Ist das im übrigen die neuste Version? Wenn ja musst du die Unterstützung für JPEGs erst noch aktivieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 26, 2008 20:29 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
Wie gesagt, mit bmp und tga sieht es genauso aus.

Wenn ich nen Disable vorsetze ändert sich nichts und ich denke nicht das es nur dunkel ist.. die Textur ist rot mit dunkelroten Schlangenlienien.

Wodran könnte es denn liegen wenn die Textur zu dunkel ist? Vielleicht ist sie ja so dunkel das es wie schwarz aussieht...

Oder gibts noch irgendwas das ich für die Texturen initialisieren muss?

Hier nen Bild:

EDIT:
Achja, der Kompiler spuckt keine Fehlermeldungen aus.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 26, 2008 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Um jegliche fehlinterpretation zu vermeiden. Folgender Code resultiert auch in einem schwarzen Quad?
Code:
  1. procedure JQuad.draw(pos : Jcoord2d);
  2. begin
  3.   //glEnable(GL_TEXTURE_2D);
  4.   //texture.Bind;
  5.   glDisable(GL_TEXTURE_2D);
  6.   glBegin(GL_QUADS);
  7.     glTexCoord2f(0,0); glVertex3f(shift.x+pos.x,shift.y + pos.y,shift.z);
  8.     glTexCoord2f(0,1); glVertex3f(shift.x+pos.x,shift.y + pos.y + height,shift.z);
  9.     glTexCoord2f(1,1); glVertex3f(shift.x+pos.x+width,shift.y + pos.y + height,shift.z);
  10.     glTexCoord2f(1,0); glVertex3f(shift.x+pos.x+width,shift.y + pos.y,shift.z);
  11.   glEnd;
  12. [...]
  13. end;


Ist es auch schwarz, wenn du es so machst?
Code:
  1.   glDisable(GL_TEXTURE_2D);
  2.   glColor3f(1, 1, 1);
  3.   glBegin(GL_QUADS);
  4.   ...


Wenn ja, dann liegt es evtl am Licht? Hast du das aktiviert?

Wenn nein (weiße Fläche), dann mach mal das glDisable wieder weg und aktiviere die Textur wieder.


Da musst du normal nichts initialisieren. Was ich gesehen habe scheinte richtig gewesen zu sein und einen Fehler gibt es ja auch nicht. Und wichtig wären da auch die Fehler zur Laufzeit. Das ist bei der glBitmap eher ausschlaggebend (datei falsch, fehlende NPOT Unterstützung). Denn das verwundert mich etwas. Sonst sollte eigentlich irgendwas zu sehen sein. Im Fehlerfall entweder absoluter Datenmüll oder zu mindest eine weiße Fläche. Oder eben Exceptions.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 27, 2008 06:25 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
hm..

Ich hab nochmal in einem altem Projekt geschaut wo das mit den Texturen auch noch geklappt hatte und da mache ich es tendentiel genau gleich...

Ich hab mal meinen Sourcecode angehängt, der is noch nicht sehr komplex.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 27, 2008 08:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
gucky hat geschrieben:
Ich hab mal meinen Sourcecode angehängt, der is noch nicht sehr komplex.

Aber etwas undurchsichtig. ;)

Nichts desto trotz 2 Dinge dann gings.

1) kannst du Texturen nur dann erstellen, wenn du auch einen Kontext hast. Also immer zu erst den RC erstellen und dann die Texturen. Das gab zu mindest bei mir einen Exception, da der Treiber als Maximalgröße 0 zurückgeliefert hatte.

2) wie ich im letzte Post schon gesagt hatte. Ein glColor3f(1, 1, 1) vor dem Zeichnen der Quads und dann wars auch hell. In TForm1.Render setzt du die Farbe auf (0, 0, 0) und anschließend zeichnest du die Quads. Die Farbe der Textur und der der Vertices werden multipliziert. Und irgendwas * 0 ergibt immer 0. Wie letztens jemand zu mir gesagt hatte. "Hey ich verzehnfache all das was auf deinem Konto ist...". ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 27, 2008 12:02 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
Ah super danke :)

Ja das mit dem glColor3f(1,1,1) hatte ich ausprobiert aber weil es aufgrund des RC nicht geklappt hatte hab ichs wieder rausgenommen.

Jetzt funktioniert es bestens, danke für die tolle Klasse :)


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 2 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.009s | 15 Queries | GZIP : On ]