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

Aktuelle Zeit: Mi Jul 09, 2025 19:35

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Dez 21, 2003 17:47 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hallöchen, nett habt ihrs hier :)

Also, ich hab ein mehr oder weniger kleines Problem, und zwar hab ich mal versucht, zur Übung so ein kleines Programm zu schreiben, wo man durch nen Raum gehen kann etc, und, naja, seht euch die Anlage an...

Was mach ich da falsch?

Ich benutze die Texturenunit von Jan Horn (glaub ich doch!?) Und keinerlei Multitexturing oder anderen schnickschnack ;)

Naja, vielen Dank für die kommenden Antworten ;)


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 17:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Auf dem Screenshot ist leider nicht ganz eindeutig zu erkennen was schief läuft, aber entweder übergibst du falsche Texturokoordinaten oder Texturenvergrößerungs- bzw. verkleinerungsmodus sind falsch angegeben. Sicher das du nen linearen Filter und Mipmapping aktiviert hast? Der komische Effekt sieht nämlich so aus als hättest du das nicht getan.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Ähm......... da fragst du mich was... Ich benutz das 1.5 Template, müsstest ja wissen, was da alles eingestellt ist, ich tus jedenfalls nicht :lol: (An dieser Stelle möchte ich darauf hinweisen, dass in der idle-methode in diesem Template zwei mal der projektionsmode gesetzt wurde, statt projektion und dann modelview)

Das ist der Anfang von ApplicationEventsIdle:

Code:
  1. // In die Projektionsmatrix wechseln
  2. glMatrixMode(GL_PROJECTION);
  3. glOrtho(0, ClientWidth, ClientHeight, 0, 0.1, 1000);
  4. // Identitätsmatrix laden
  5. glLoadIdentity;
  6. // Viewport an Clientareal des Fensters anpassen
  7. glViewPort(0, 0, ClientWidth, ClientHeight);
  8. // Perspective, FOV und Tiefenreichweite setzen
  9. gluPerspective(45, ClientWidth/ClientHeight, 0.0001, 1000);
  10. // In die Modelansichtsmatrix wechseln
  11. glMatrixMode(GL_MODELVIEW);
  12.  
  13. //^---- Hier steht im Template btw wieder GL_Projection
  14.  
  15.  
  16. // Identitätsmatrix laden
  17. glLoadIdentity;
  18. // Farb- und Tiefenpuffer löschen
  19. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  20. //zbuffer
  21. glEnable(GL_DEPTH_TEST);
  22.  
  23.  
  24. {draw;}
  25. glEnable(GL_TEXTURE_2D);
  26. glEnable(GL_CULL_FACE);
  27.  
  28. glEnable(GL_LINE_SMOOTH);
  29. {glscalef(0.4,0.4,0.4);}
  30. glbindtexture(GL_TEXTURE_2D,boden_Tex);


Und das im FormCreate-Teil:
Code:
  1.  
  2. // OpenGL-Funtionen initialisieren
  3. InitOpenGL;
  4. i:=0;
  5. frame:=0;
  6. // Gerätekontext holen
  7. DC := GetDC(Handle);
  8. // Renderkontext erstellen (32 Bit Farbtiefe, 24 Bit Tiefenpuffer, Doublebuffering)
  9. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  10. // Erstellten Renderkontext aktivieren
  11. ActivateRenderingContext(DC, RC);
  12. // Tiefenpuffer aktivieren
  13. glEnable(GL_DEPTH_TEST);
  14. // Nur Fragmente mit niedrigerem Z-Wert (näher an Betrachter) "durchlassen"
  15. glDepthFunc(GL_LESS);
  16. // Löschfarbe für Farbpuffer setzen
  17. glClearColor(0,0,0,0);
  18. // Displayfont erstellen
  19. BuildFont('MS Sans Serif');
  20. // Idleevent für Rendervorgang zuweisen
  21. Application.OnIdle := ApplicationEventsIdle;
  22. // Zeitpunkt des Programmstarts für FPS-Messung speichern
  23. StartTick := GetTickCount;
  24.  
  25.  
  26.  
  27. //Texturen laden
  28.  
  29. loadtexture('textures\boden0.bmp',boden_tex,false);
  30. loadtexture('textures\mauer1.bmp',wand_tex,false);
  31.  

Keine Ahnung, ob dir (und damit zwangsweise auch mir) das geholfen hat ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 18:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Sache mit der doppelten Projektionsmatrix wurde mir bereits zugetragen und ist auch seit längerem gefixt (genauso wie der Download).

MipMapping aktiviert man nicht einfach so wie z.B. Licht oder Texturing, sondern setzt dies als Eigenschaft eines Texturenobjektes. Du lädst also deine Textur (die dann ja auch gleichzeitig aktuell gebundenes Texturenziel ist) und setzt dann den Vergrößerungs- und Verkleinerungsfilter so :
Code:
  1.  glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  2. glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

Dadurch wird die Textur linear gefiltert (Bilinearer Filter) und die generierten Mipmaps werden genutzt (die ja im Texturenloader via gluBuildMipMaps2D erstellt wurden).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 18:25 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hmm also wenn ich das einfach nur nach das Laden der Textur schreibe, dann ändert sich überhaupt nichts
Code:
  1. loadtexture('textures\mauer1.bmp',wand_tex,false);
  2. glTexParameteri(wand_tex, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  3. glTexParameteri(wand_tex, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

:cry:
Auch,wenn ich das nach das glbindtexture setze, ändert sich nichts :cry: *schief*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 18:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Der erste Parameter ist ja auch falsch. Die wand_tex ist doch bereits gebunden, du musst das Texturenziel angeben und nicht die Texturen-ID. Siehe dazu auch folgender Link.

P.S. : Für solche grundlegenden OpenGL-Sachen solltest du dir unbedingt mal das Redbook zu Gemüte führen, quasi die OpenGL-Anleitung. Gibts bei uns auch in der Downloadsektion.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 21, 2003 20:01 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hach ich Dummerchen :) (siehe sig)
Oki, Das hat soweit geklappt :D
Vielen Dank :wink:


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 10 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 ]