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

Aktuelle Zeit: Do Jul 10, 2025 03:13

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Do Sep 11, 2003 10:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mai 14, 2003 14:17
Beiträge: 10
ich habe wie im texturen tutoroial erklärt ist versucht eine textur zu laden und auf ein viereck zu bringen.
allerdings erwarten die funktion glgentexture bei mir einen zeigertyp auf ein uint und nicht ein uint selber.
Bei mir erscheint immer nur ein weißes vierreck.

vollstandiger Quelltext: http://www.johannes.krude.de/textur.zip

Code:
  1. procedure glDraw;
  2. VAR
  3.     texture1: PTAUX_RGBImageRec;
  4.     tex: uint;
  5. BEGIN;
  6.   texture1 := auxDIBImageLoadA('wand.bmp');
  7.   glGenTextures(1, @tex);
  8.   glBindTexture(GL_TEXTURE_2D, tex);
  9.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  10.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  11.   glTexImage2D(GL_TEXTURE_2D, 0, 3,
  12.                           texture1^.sizeX, texture1^.sizeY, 0,
  13.                           GL_RGB, GL_UNSIGNED_BYTE, texture1^.data);
  14.   glClearColor(0,0,0,0);
  15.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  16.   glloadidentity;
  17.   gltranslatef(0,0,-3);
  18.   glBegin(GL_QUADS);
  19.     glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  20.     glTexCoord2f(0,1); glVertex3f(-1,1,0);
  21.     glTexCoord2f(1,1); glVertex3f(1,1,0);
  22.     glTexCoord2f(1,0); glVertex3f(1,-1,0);
  23.   glEnd;
  24. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 11, 2003 15:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du machst zwei grobe Fehler :
Zum einen lädst du (wenn obiger Quellcode direkt aus deinem Programm stammt) deine Textur in jedem Frame. Das sollte man natürlich nicht machen, und es reicht wenn du die Textur beim Programmstart lädst.
Zum anderen hast du nirgendwo Texturemapping aktiviert, weshalb OpenGL auch keine Texturen anzeigt ( glEnable(GL_TEXTURE_2D) ).

Das dürfte dein Problem beseitigen, falls nicht, dann achte bitte darauf das deine Textur auch den Spezifikationen entspricht. Größe = 2^n*2^n, richtige Bit-Anzahl.


P.S. : Am besten gewöhnst du dir erst garnicht an, glAux zu nutzen.Denn diese ist Library alt, wird nicht mehr weiterentwickelt, und ist recht eingeschränkt. Nutze am besten sowas wie glBMP ( http://delphigl.cfxweb.net ) oder Sulacos Textures.pas ( http://www.sulaco.co.za ).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 11, 2003 22:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mai 14, 2003 14:17
Beiträge: 10
Phobeus hat in seinem Tutoroial aber nirgendswo erwähnt, dass man
texturen durch glEnable(GL_TEXTURE_2D) einschaltem muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 11, 2003 22:56 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Stimmt, habe ich wirklich nicht drauf hingewiesen, werde es mir notieren und nochmal nacharbeiten. Diese Zeile bewirkt, dass die Textur erst beim rendern von OpenGL auf das Objekt "geklebt" wird. Entsprechend kann man mit glDisable(GL_TEXTURE_2D); auch wieder mit dem Texturieren aufhören. Z.B. wenn man nur Linien zeichnet und dort gar keine Textur braucht.

In meinem Beispiel-Source habe ich diese Zeile übrigens im Init hineingepackt.

Des weiteren solltest Du wirklich SOS Rat befolgen und nicht mehr auf Glaux setzen. Dieses ist leider total veraltet.

_________________
"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: Mo Sep 29, 2003 16:13 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Könntet ihr nicht ne entsprechende Unit oder DLL in euren Files-Ordner legen und die dann in dem Tutorial benutzen?

Gibts eigentlich ne Unit mit Deutscher Dokumentation?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 29, 2003 21:56 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Glaux ist bei uns unter Filez/Bibliotheken verfügbar.

_________________
"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 Okt 09, 2003 15:51 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich habe auch Probleme mit diesem Tutorial. Bei mir mein der Compiler ihm sein glGenTextures und glBindTextures unbekannt :!:
Ich habe die glaux.dll ins system32 kopiert und die glaux.pas liegt im .Bin.
Code:
  1. unit TexturenUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, opengl,
  7.   ExtCtrls,glaux;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Timer1: TTimer;
  12.    
  13.     procedure FormCreate(Sender: TObject);
  14.     procedure FormDestroy(Sender: TObject);
  15.     procedure FormResize(Sender: TObject);
  16.     procedure Timer1Timer(Sender: TObject);
  17.   private
  18.     { Private-Deklarationen }
  19.    myDC : HDC;
  20.    myRC : HGLRC;
  21.    myPalette : HPALETTE;
  22.    procedure SetupPixelFormat;
  23.    procedure LTexture(Pfad:PChar);
  24.   public
  25.     { Public-Deklarationen }
  26.   end;
  27.  
  28. var
  29.   Form1: TForm1;
  30.   texture1: PTAUX_RGBImageRec;
  31.  
  32. implementation
  33.  
  34. {$R *.DFM}
  35.  
  36. [...]
  37.  
  38. procedure TForm1.LTexture(Pfad:PChar);
  39. BEGIN;
  40.       texture1 := auxDIBImageLoadA(Pfad);
  41.       IF NOT Assigned( texture1 ) THEN
  42.       BEGIN;
  43.       MessageBox(0,'Texturenpfad oder Dateiname falsch!',
  44.                    'Fehler beim Laden der Textur!',MB_OK or MB_ICONERROR);
  45.       Halt;
  46.       END;
  47. end;
  48.  
  49. procedure render;
  50. var tex : gluInt;
  51. begin
  52. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farb und Tiefenpuffer löschen
  53. glLoadIdentity;                                      // World Matrix zurücksetzen
  54. //ab hier kommen die Objekte hin
  55.  
  56. //Texturen aufbereiten
  57. texture1 := auxDIBImageLoadA('C:/Dokumente und Einstellungen/Kevin/Eigene Dateien/Eigene Bilder/PBall/ZButtonAn.bmp');
  58. glGenTextures(1, tex);
  59. glBindTexture(GL_TEXTURE_2D, tex);
  60. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  61. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  62. glTexImage2D(GL_TEXTURE_2D, 0, 3,
  63.                         texture1^.sizeX, texture1^.sizeY, 0,
  64.                         GL_RGB, GL_UNSIGNED_BYTE, texture1^.data);
  65.  
  66.  
  67.  
  68. //Objekt
  69. gltranslate(0,0,-5);
  70. glBegin(GL_QUADS);
  71.         glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  72.         glTexCoord2f(0,1); glVertex3f(-1,1,0);
  73.         glTexCoord2f(1,1); glVertex3f(1,1,0);
  74.         glTexCoord2f(1,0); glVertex3f(1,-1,0);
  75. glEnd;
  76.  
  77. SwapBuffers(form1.myDC);                             //scene ausgeben
  78. end;
  79.  
  80. procedure TForm1.Timer1Timer(Sender: TObject);
  81. begin
  82. render;
  83. end;
  84.  
  85. Initialization
  86. Form1.LTexture('C:/Dokumente und Einstellungen/Kevin/Eigene Dateien/Eigene Bilder/PBall/ZButtonAn.bmp');
  87.  
  88. end.

Fehler:
Undefinierter Bezeichner glGenTextures...

Muss ich noch was einbinden?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 15:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sowohl glGenTextures also auch glBindTextures sind in den original OpenGL-Header von Borland (opengl.pas) nicht (oder inkorrekt) deklariert.Zieh dar also mal unsere dglOpenGL.pas und binde diese ein,und schon sollte der Compiler alle Funktionen finden.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 16:06 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Meinst Du den OpenGL 1.5 Header?? Den hier?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 16:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Schau mal in diesen Thread (ich bin mir nicht sicher ob der Header in der DL-Sektion auch der aktuellste ist) : viewtopic.php?t=1863

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 16:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
OK. Mit dem werd ichs gleich nochmal probieren...
Noch ne Frage: normalerweise sind die Delphibiblotheken doch DCU's oder? Wo ist den der richtige Platz für die *.pas header die man hier so downloaded? Liegen die im .Bin an der richtigen Stelle?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nein,DCUs sind einfach nur die kompilierten PAS-Dateien.Und meine Header die ich für diverse Projekte nutze hab ich in nem eigenen Basecode-ordner und binde die je nach Bedarf ein.Die Sache mit dem BIN-Ordner von Delphi finde ich nicht so toll.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 09, 2003 16:26 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
OK. Danke soweit... :wink:

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 14:59 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Ich schmeiss`meine immer ins LIB-Verzeichniss.

Und ich hab auch ein Problem, was hier reinpasst. Mein Hauptproblem, an dem ich schon recht lange sitze:

Welche Unit ist denn nun die richtige?
Es gibt eine von Borland, die hat bei mir aber was gegen Texturen.
Dann ist hier die Opengl15.pas, die mag die Extensions von Opengl nicht.
Und dann gibt es hier noch die OpenGL12.pas, die mag aber bei mir den Text vom VCL-Template nicht.

Und bei mir gibts immer eine Schutzverletzung mit dem Titel ddhelp.
Die kommt immer, wenn ich euer VCL-Template nehme und zum zweitenmal etwas kompiliere, wo OpenGL drin ist. Dann muss ich erst nen Neustart machen, damit ich wieder arbeiten kann.
Mittlerweile hab ich nen Trick dagegen gefunden. Ich starte jetzt immer vorher ein kleines 3D-Spiel, welches anscheinend mit OpenGL gemacht ist. Wenn ich das beendet hab, kann ich danach kompilieren soviel ich will.

Was den letzten Fehler betrifft, hab ich keine Ahnung wo der herkommt.


Gruß,
Frase


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 15:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
SpaceJunky hat geschrieben:
Es gibt eine von Borland, die hat bei mir aber was gegen Texturen.

Die original Borland OpenGL.pas ist fehlerhaft und nicht vollständig.Deshalb sollte man da die Finger von lassen.

SpaceJunky hat geschrieben:
Dann ist hier die Opengl15.pas, die mag die Extensions von Opengl nicht.

Das ist eine alte GL1.5-Unit,die nicht mehr verwendet werden sollte.Die neue gibts in diesem Thread und ist bei vielen Leuten (auch bei mir) im Dauereinsatz und macht nirgendwo Probleme.

SpaceJunky hat geschrieben:
Und dann gibt es hier noch die OpenGL12.pas, die mag aber bei mir den Text vom VCL-Template nicht.

Nimm besser unsere neue dglOpenGL.pas.Die ist aktueller und läuft hier bei vielen ohne Probleme.

SpaceJunky hat geschrieben:
Und bei mir gibts immer eine Schutzverletzung mit dem Titel ddhelp.
Die kommt immer, wenn ich euer VCL-Template nehme und zum zweitenmal etwas kompiliere, wo OpenGL drin ist. Dann muss ich erst nen Neustart machen, damit ich wieder arbeiten kann.
Mittlerweile hab ich nen Trick dagegen gefunden. Ich starte jetzt immer vorher ein kleines 3D-Spiel, welches anscheinend mit OpenGL gemacht ist. Wenn ich das beendet hab, kann ich danach kompilieren soviel ich will.
Was den letzten Fehler betrifft, hab ich keine Ahnung wo der herkommt.

Das wurde grade erst in diesem Thread ausdiskutiert. (Allerdings erst am Ende des Threads)

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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
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.014s | 14 Queries | GZIP : On ]