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

Aktuelle Zeit: Di Jul 08, 2025 09:13

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



Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur wird nicht angezeigt
BeitragVerfasst: Mi Mai 30, 2007 22:58 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Guten Abend allem miteinander!

Ich habe ein kleines Programm geschrieben, welches auf Knopfdruck einfach nur ein Quadrat texturieren soll. Haben alles (so weit ich weiß) nach dem Tutorial gemacht, das es hier auf der Website gibt. Blöderweise wird die Textur nicht angezeigt, das Quadrat wird ausgegeben, bleibt aber vollkommen Weiß.
Ich sitzt etz scho seit mind. 4 Stunden über diesem (entschuldigung) mist, habe gegoogelt, habe ihr gesucht und trotzdem nichts gefunden.
Hier ist der Quelltext

Code:
  1.  
  2. var
  3.   Form3: TForm3;
  4.   T: Integer;
  5.   TexID: TgluInt;
  6. const
  7.    NearClipping = 1;
  8.   FarClipping  = 1000;
  9. ....
  10. implementation
  11.  
  12. procedure TForm3.FormCreate(Sender: TObject);
  13. begin
  14.  DC:= GetDC(Handle);
  15.   if not InitOpenGL then Application.Terminate;
  16.   RC:= CreateRenderingContext( DC,
  17.                                [opDoubleBuffered],
  18.                                32,
  19.                                24,
  20.                                0,0,0,
  21.                                0);
  22.   ActivateRenderingContext(DC, RC);
  23.   SetupGL;
  24.   glClearColor(0.3, 0.4, 0.7, 0.0);
  25. end;
  26.  
  27. procedure TForm3.Render;
  28. begin
  29.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  30.   glMatrixMode(GL_PROJECTION);
  31.   glLoadIdentity;
  32.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  33.  
  34.   glMatrixMode(GL_MODELVIEW);
  35.   glEnable(GL_TEXTURE_2D);
  36.   glBindTexture(GL_TEXTURE_2D, TexID);
  37.   glLoadIdentity();
  38. glLoadIdentity();
  39. glTranslatef(0,0,-10);
  40. glPushMatrix();
  41.   glTranslatef(-2,0,0);
  42.  glBegin(GL_QUADS);
  43.   glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  44.   glTexCoord2f(0,1); glVertex3f(-1,1,0);
  45.   glTexCoord2f(1,1); glVertex3f(1,1,0);
  46.   glTexCoord2f(1,0); glVertex3f(1,-1,0);
  47. glEnd;
  48. glDisable(GL_TEXTURE_2D);
  49. glPopMatrix();
  50.  
  51. glTranslatef(2,0,0);     //dient bloß als Test !!!
  52. glBegin(GL_TRIANGLES);
  53.   glColor3f(1,0,0); glVertex3f(-1,-1, 0);
  54.   glColor3f(0,0,1); glVertex3f( 1,-1, 0);
  55.   glColor3f(0,1,0); glVertex3f( 0, 1, 0);
  56. glEnd();
  57.  
  58.   SwapBuffers(DC);
  59. end;
  60.  
  61.  
  62. procedure TForm3.SetupGL;
  63. begin
  64.   glClearColor(0.3, 0.4, 0.7, 0.0);
  65.  // glEnable(GL_DEPTH_TEST);          // wenn zugeschaltet, gehts auch net !
  66.  // glEnable(GL_CULL_FACE);          
  67. end;
  68.  
  69.  
  70. procedure TForm3.LoadTexture;
  71. var tex : PSDL_Surface;
  72. begin
  73. tex := IMG_Load('C:\d.jpg');
  74. if assigned(tex) then
  75. begin
  76. glGenTextures(1, @TexID);
  77. glBindTexture(GL_TEXTURE_2D, TexID);
  78. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  79. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  80. glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  81. SDL_FreeSurface(tex);
  82. end;
  83. end;
  84.  
  85. procedure TForm3.Button1Click(Sender: TObject);
  86. begin
  87. LoadTexture;
  88. Render;
  89. end;


Ich benutze Delphi 2005 Professional.
Vielen Dank für eure Hilfe !


Zuletzt geändert von das alkodil am Do Mai 31, 2007 14:03, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 05:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wenn du in Delphi eine Anwendung kompilierst, dann stellt Delphi vor jeder benutzten Quellcodezeile ein kleines blaues Pünktchen dar. Sofern Debugginfos aktiv sind. Ist aber standard. Wenn du dir mal die Methode LoadTexture genau anschaust dürftest du feststellen, dass dort die Punkte fehlen.

Mit anderen Worten. Ich kann nicht entdecken, dass du die Methode LoadTexture überhaupt benutzt. Schreibe diese mal an das Ende von SetupGL oder FormCreate.

Wenn du die Textur im Render benutzt solltest du sie Dort auch noch mal binden. und wenn du sie nicht mehr benötigst solltest du sie auch wieder deaktivieren.
Code:
  1. glEnable(GL_TEXTURE_2D);
  2. glBindTexture(GL_TEXTURE_2D, TexID);
  3. // Quad zeichnen
  4. glDisable(GL_TEXTURE_2D);
  5.  
  6. // anderes zeichnen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 08:43 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Sorry, hatte vergessen, mein OnClick - Event mit reinzuschreiben.
Habe die Textur auch eingebunden, funktioniert trotzdem nicht. Interresanterweise kommt bei ersten Mal klicken ein weißes Quadrat, wenn ich das zweite Mal klicke, wird das weiße Quadrat grün


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 08:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du musst die Textur natürlich auch vor dem Darstellen laden.

Aber noch eine kleine Ergänzung zu meinem letzten Beitrag. OpenGL ist eine Statemaschine. Das heißt das was aktiviert wurde bleibt so lange aktiv bis es wieder deaktiviert wird. Wenn du also eine Fläche mit einer Textur zeichnest und anschließend eine Ohne zeichnen möchtest und die Textur aber nicht deaktivierst dann wird das Texel (Pixel der Textur) was du als Letztes mit glTexCoord angegeben hast über die gesammte Fläche gespannt.

Ich gehe auch mal davon aus, dass das mit OnClick nur ein Test ist aber trotzdem der Hinweis. Texturen auch bitte nur 1 Mal laden und für den Anfang das direkt nach dem Erstellen des Kontextes erledigen. Wenn du die ganzen Zusammenhänge verstanden hast kannst du es natürlich so gestalten wie du willst nur zu Anfang fährt man damit am Besten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 10:18 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ich würde eher in Richtung "global & lokal" suchen. Du lädst die Textur in eine lokale Variable "TexID", die am Ende er Prozedur verworfen wird. Im Render hingegen verwendest Du eine globale Variable, die vermutlich uninitalisiert ist. Würde also mal die lokale unten entfernen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 12:25 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
So, ich hab jetzt das LoadTexture vor das Render geschrieben und ich habe die lokale Variable TextID aus dem LoadTexture entfernt. Das Ergebniss bleibt das selbe, ein weißes Quadrat. Das Bild hat eigendlich auch die richtige Auflösugn (256x256). Habe auch mal das LoadTexture mal in das OnCreate geschoben, hat nichts geändert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 13:36 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Entfern mal Zeile 48 deines Quellcode. Du hast da zweimal glEnd drinnen. Desweiteren bist du sicher das BGR und nicht RGB das richtige ist?

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 14:02 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Habe die Zeile entfernt, habe auch mal RGB ausprobiert, das Problem besteht weiterhin


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 22:48 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
poste bitte nochmal den COde wie er jetzt ist. Du hast ja einiges geändert.

Ansonsten nochmal die Punkte hier checken: Checkliste_Texturierung

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 01, 2007 00:07 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Den Quellcode, den ich in meinen ersten Beitrag geschrieben habe, habe ich immer wieder aktualisiert, d.h er entspricht meinem 'echten' Quellcode


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 11, 2007 18:57 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Hat keiner von euch eine Ahnung, an was es liegt?????
Bitte, helft mir !!!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 11, 2007 21:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich kann so jetzt nichts entdecken. Aber packe das mal bitte alles zusammen und schicke es mir per Mail. Meine Adresse findest du auf der Team Seite. Aber bitte mit allen benötigten Quellen und bildern.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 00:02 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Thema hat sich von selbst 'erledigt'....
Head-Crash.....^^
Beim neuem Projekt funktioniert komischerweise alles perfekt, danke für eure Hilfe !!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 20:55 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Lossy: Verweise bitte hier hin: Team (Ist aktueller)

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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