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

Aktuelle Zeit: Di Jul 08, 2025 21:47

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen Tutorial
BeitragVerfasst: So Mai 16, 2004 19:36 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
Hi!
Ich habe mir das Texturen Tut durchgelesen und damit ein Problem.
Ich arbeite mit der nicht mehr lange laufenden Delphi 7 Trial und verwende den dglOpenGL Header.
Ich texturiere ein Quad, aber das bleibt weiß.
Hier der (möglicherweise) relevante Code:
Code:
  1. type
  2.   TGLForm = class(TForm)
  3.     procedure FormCreate(Sender: TObject);
  4.     procedure FormActivate(Sender: TObject);
  5.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  6.     procedure FormResize(Sender: TObject);
  7.   private
  8.     { Private-Deklarationen }
  9.     DC : HDC;
  10.     RC : HGLRC;
  11.     stt: Integer;
  12.     frm: Integer;
  13.     fps: Integer;
  14.     tex: TGLuint;
  15.     tld: PTAUX_RGBImageRec;
  16.  
  17.     procedure ExitError(const msg: String);
  18.     procedure RenderWorld(Sender: TObject; var Done: Boolean);
  19.   public
  20.     { Public-Deklarationen }
  21.   end;
  22. [...]
  23. procedure TGLForm.RenderWorld(Sender: TObject; var Done: Boolean);
  24. begin
  25.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  26.  
  27.   glLoadIdentity;
  28.   glTranslatef(0.0, 0.0, -6.0);
  29.   //glRotatef(frm, 0.0, 1.0, 0.0);
  30.  
  31.   glBindTexture(GL_TEXTURE_2D, tex);
  32.   glBegin(GL_QUADS);
  33.     //glColor3f(1.0, 0.0, 0.0);
  34.     glTexCoord2f(0.0, 0.0);
  35.     glVertex3f(-0.5, -0.5, 0.0);
  36.  
  37.     //glColor3f(0.0, 1.0, 0.0);
  38.     glTexCoord2f(0.0, 1.0);
  39.     glVertex3f(-0.5, 0.5, 0.0);
  40.  
  41.     //glColor3f(0.0, 0.0, 1.0);
  42.     glTexCoord2f(1.0, 1.0);
  43.     glVertex3f(0.5, 0.5, 0.0);
  44.  
  45.     glTexCoord2f(1.0, 0.0);
  46.     glVertex3f(0.5, -0.5, 0.0);
  47.   glEnd;
  48.  
  49.   SwapBuffers(DC);
  50.  
  51.   inc(frm);
  52.   if (GetTickCount - stt >= 1000) then
  53.   begin
  54.     fps     := frm;
  55.     frm     := 0;
  56.     Caption := 'OpenGL - ' + IntToStr(fps) + ' fps';
  57.     stt     := GetTickCount;
  58.   end;
  59.  
  60.   Done := false;
  61. end;
  62.  
  63. procedure TGLForm.FormCreate(Sender: TObject);
  64. begin
  65.   if (not InitOpenGL) then ExitError('InitOpenGL');
  66.  
  67.   DC := GetDC(Handle);
  68.   if (DC = 0) then ExitError('GetDC');
  69.  
  70.   RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 8, 0, 0, 0);
  71.   if (RC = 0) then ExitError('CreateRenderingContext');
  72.  
  73.   ActivateRenderingContext(DC, RC);
  74.  
  75.   Application.OnIdle := RenderWorld;
  76. end;
  77.  
  78. procedure TGLForm.FormActivate(Sender: TObject);
  79. begin
  80.   glViewport(0, 0, Width, Height);
  81.  
  82.   glEnable(GL_TEXTURE_2D);
  83.   glShadeModel(GL_SMOOTH);
  84.   glClearColor(0.0, 0.0, 0.0, 1.0);
  85.   glClearDepth(1.0);
  86.   glEnable(GL_DEPTH_TEST);
  87.   glDepthFunc(GL_LEQUAL);
  88.   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  89.  
  90.   glMatrixMode(GL_PROJECTION);
  91.   glLoadIdentity;
  92.   gluPerspective(45.0, ClientWidth/ClientHeight, 1.0, 1000.0);
  93.  
  94.   glMatrixMode(GL_TEXTURE);
  95.   glLoadIdentity;
  96.  
  97.   glMatrixMode(GL_MODELVIEW);
  98.   glLoadIdentity;
  99.  
  100.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  101.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  102.  
  103.   tld := auxDIBImageLoadA('.\textures\tex.bmp');
  104.   if (not Assigned(tld)) then ExitError('auxDIBImageLoadA');
  105.  
  106.   glGenTextures(1, @tex);
  107.   glBindTexture(GL_TEXTURE_2D, tex);
  108.  
  109.   glTexImage2D(GL_TEXTURE_2D, 0, 3, tld^.sizeX, tld^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tld^.data);
  110.  
  111.   stt := GetTickCount;
  112. end;
Danke im Voraus!

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 19:53 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
Code:
  1.   tld := auxDIBImageLoadA('.\textures\tex.bmp');
  2.   if (not Assigned(tld)) then ExitError('auxDIBImageLoadA');
  3.  
  4.   glGenTextures(1, @tex);
  5.   glBindTexture(GL_TEXTURE_2D, tex);
  6.  
  7.   glTexImage2D(GL_TEXTURE_2D, 0, 3, tld^.sizeX, tld^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tld^.data);

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Enstpricht die Texturen auch der Dimension 2^n*2^n ? Da du nämlich kein gluBuildMipMaps benutzts musst du darauf achten. Ansonsten lass die Finger von der glaux, die hat schon sehr viel Staub angesetzt. Die Textures.pas ist da viel besser.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 20:13 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
25x256, das ist nicht der Fehler.

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 20:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
@uzingLG hat geschrieben:
25x256, das ist nicht der Fehler.


dann sag mir 2^Wieviel = 25 ist ;)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 20:20 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
Ooops, meinte 256x256 :lol: :oops:

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 16, 2004 20:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Dann steig auf textures.pas um :-D
Hat mir noch keine richtigen Probleme gemacht :D

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 20, 2004 17:54 
Offline
DGL Member

Registriert: Do Mai 13, 2004 16:36
Beiträge: 116
Wohnort: Deutsch-Wagram (Österreich)
Sooo, ich bin schon auf Jans Meisterwerk umgestiegen und habe noch schnell eine Frage zu den Texturfiltern: Was bedeutet GL_NEAREST? Werden da keine MipMaps verwendet?

_________________
Diese Signatur ist defekt. Bitte wählen Sie die Numer 12846712894671893230917497617383216 (gültig ab 32.13.2671)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 20, 2004 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nein, MipMaps werden nur genutzt (falls vorhanden) wenn du das explizit im Texturenfilter angibst, also z.B. via GL_LINEAR_MIPMAP_LINEAR oder GL_NEAREST_MIPMAP_LINEAR. Alle anderen Texturenfilter arbeiten ohne Mipmaps. Mehr Infos dazu gibts im Redbook, Kapitel 9.

_________________
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  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.014s | 15 Queries | GZIP : On ]