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

Aktuelle Zeit: Fr Jul 18, 2025 08:16

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Jul 17, 2008 19:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Hallo allerseits,

ich versuche gerade ein 2D-Fuballspiel was bisher grafisch auf einem TImage dargestellt wurde umzuschreiben, damit es mit OpenGl läuft. Also fix ein paar Tutorials durchgelesen, Delphi angeschmissen und fleißig rumprobiert. Am Anfang ging auch alles recht gut: Dreiecke zeichnen, ein bisschen mit der Kamera spielen und ein paar bitmaps als texturen irgendwo draufklatschen.

Also, hab ich mich an das umschreiben des Fuballspiels gewagt.

Das Problem dabei ist jetzt folgendes:
Einige Texturen werden mir gar nicht oder nur fehlerhaft gezeichnet.



Zwei der fehlerhaften texturen hab ich mal im Anhang hochgeladen. Dabei findet sich auch ein Screenshot, anstatt der weißen Fläche in der Mitte sollte der Mittelkreis stehen und die hässlichen Flecken links und rechts sollten eigentlich der hübsche Torfleck sein.

Als Texturloader benutze ich die glbitmap.pas

Die Texturen lade ich so:
Code:
  1.  
  2.   Textur:=TglBitmap2D.Create;
  3.   Textur.LoadFromFile(s);
  4.   Textur.GenTexture(false); // geladene Textur an OpenGL übergeben
  5.  




Zum zeichnen der Quads, auf die die texturen geklebt werden, habe ich mir eine eigene prozedur geschrieben, der ich die obere linke ecke des quads, die breite + höhe der Textur und den z wert als parameter angebe.

Code:
  1.  
  2. procedure Tmain.ZeichneQuad(X,Y,pwidth,pheight,z:integer);
  3. begin
  4.     glBegin(GL_QUADS);
  5.     glTexCoord2f(1,0); glVertex3f( X+pwidth,clientheight-(y+pheight), z);
  6.     glTexCoord2f(1,1); glVertex3f( X+pwidth,clientheight- y, z);
  7.     glTexCoord2f(0,1); glVertex3f(x,clientheight- y, z);
  8.     glTexCoord2f(0,0); glVertex3f(x,clientheight- (y+pheight), z);
  9.     glend;
  10. end;
  11.  


Und hier nun der Aufruf von zeichnequad im laufenden programm:
Code:
  1.  
  2. //Mittelkreis
  3.   TexturMarkierungen[9].textur.bind;
  4.   N:=Texturmarkierungen[9].Textur.width ;
  5.   M:=Texturmarkierungen[9].Textur.height ;
  6.  
  7.   zeichnequad(clientwidth div 2-N div 2,
  8.               clientheight div 2-M div 2,
  9.               N,M,-9);
  10.  
  11.  
  12. //Torfleck
  13.   TexturTorfleck.textur.bind;
  14.   n:=texturtorfleck.Textur.Width;
  15.   m:=texturtorfleck.Textur.height;
  16.  
  17.   zeichnequad( width - randlinks - N + 50,
  18.               height div 2 - M div 2,
  19.               N,M,-9);
  20.  
  21.   zeichnequad( randlinks - 50,
  22.               height div 2 - M div 2,
  23.               N,M,-9);
  24.  




Weiß nicht ob es wichtig ist, aber hier mal mein SetupGl:
Code:
  1.  
  2.  glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
  3.   glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  4.   glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  5.   glEnable(GL_TEXTURE_2D);
  6.   glEnable(GL_ALPHA_TEST);
  7.   glAlphaFunc(GL_GREATER, 0.1);
  8.  



Vielen Dank für jede Hilfe.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 17, 2008 20:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du brauchst dafür Blending. Du hast den Alphatest aktiviert und dadurch werden Texturen einfach abgeschnitten. Du brauchst aber einen Weichen übergang und dafür ist Blending da.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 17, 2008 22:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Okay, also mit dem Torfleck funktioniert das ganze super, sieht genau so aus wie es sein sollte.

Sorgenkind bleibt der Mittelkreis. Blending hilft mir nicht weiter, die Textur bleibt einfach weiß (bzw. grün wenn ich sie mit dem Hintergrund blende). Ich denke, die Textur wird nicht geladen. Gibt es bei der glbitmap.pas bestimmte Anforderungen an die texturen?


Oh okay, verstehe ich das gerade richtig, dass ich mit der glbitmap nur Texturen laden kann, deren Ausmaße eine Zweierpotenz sind? Kann man da irgendwie drumherummogeln oder muss man die Texturen anpassen

€: sry für doppelpost, kann ein moderator den Post über mir bitte löschen?

€2: Okay, ich habe den Thread gefunden

viewtopic.php?t=6411&highlight=textur+zweierpotenz

da wird das schon ausführlich von dir beantwortet. Betrachtet diesen Thread also als beantwortet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2008 12:34 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn du was vorzeigbares hast dann stell dein Projekt ruhig hier im Forum vor. Mein PBall Manager ist glaub ich bisher das einzige Ballsportspiel.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2008 15:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Naja, vorzeigbar ist es bisher nur mit der VCL weil ich es noch nicht komplett in OpenGL konvertiert hab.

Kannst dir bei Gelegenheit ja mal die Screenis angucken:

http://www.delphi-forum.de/topic_Fussba ... 74703.html

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 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 | 16 Queries | GZIP : On ]