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

Aktuelle Zeit: Sa Jul 19, 2025 13:03

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Weisse Fläche statt Textur
BeitragVerfasst: Do Okt 31, 2002 17:51 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Hallo,

ich habe mal wieder ein Problem. Diesmal mit Texturen. Ich denke, dass ich alles, wie im Tutorial gemacht habe, aber es will mir nicht gelingen. :cry:
Statt eines texturierten Quads sehe ich nur ein weißes.
Ich poste mal meinen Code:
Code:
  1. unit textur;
  2.  
  3.  
  4.  
  5. interface
  6.  
  7.  
  8.  
  9. uses
  10.  
  11.   Windows, Messages, SysUtils, Classes, Graphics, Controls,
  12.  
  13.   Forms, Dialogs,GL, GLU, ExtCtrls, GLAUX;
  14.  
  15.  
  16.  
  17. type
  18.  
  19.   TForm1 = class(TForm)
  20.  
  21.     procedure FormCreate(Sender: TObject);
  22.  
  23.     procedure FormDestroy(Sender: TObject);
  24.  
  25.     procedure FormPaint(Sender: TObject);
  26.  
  27.   private
  28.  
  29.    hrc : HGLRC;
  30.  
  31.    Procedure SetDCPixelFormat(Handle: HDC);
  32.  
  33.    Procedure DrawScene;
  34.  
  35.     { Private-Deklarationen}
  36.  
  37.   public
  38.  
  39.     { Public-Deklarationen}
  40.  
  41.   end;
  42.  
  43.  
  44.  
  45. var
  46.  
  47.   Form1: TForm1;
  48.  
  49.     tex : gluInt;
  50.  
  51. implementation
  52.  
  53.  
  54.  
  55. PROCEDURE glGenTextures(n: GLsizei; VAR textures: GLuint); STDCALL; EXTERNAL opengl32;
  56.  
  57. PROCEDURE glBindTexture(target: GLenum; texture: GLuint);  STDCALL; EXTERNAL opengl32;
  58.  
  59.  
  60.  
  61. {$R *.DFM}
  62.  
  63.  
  64.  
  65. procedure InitTextures;
  66.  
  67. var
  68.  
  69.   texture1: PTAUX_RGBImageRec;
  70.  
  71. begin
  72.  
  73.   texture1 := auxDIBImageLoadA('./texture/wall.bmp');
  74.  
  75.   if not Assigned( texture1 ) then begin
  76.  
  77.     MessageBox(0,'Texturenpfad oder Dateiname falsch!'+#13+' Bitte den Pfad überprüfen!','Fehler beim Laden der Textur!',MB_OK or MB_ICONERROR);
  78.  
  79.   end;
  80.  
  81.  
  82.  
  83.   glGenTextures(1, tex);
  84.  
  85.   glBindTexture(GL_TEXTURE_2D, tex);
  86.  
  87.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  88.  
  89.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  90.  
  91.   glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1^.sizeX, texture1^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1^.data);
  92.  
  93.  
  94.  
  95. end;
  96.  
  97.  
  98.  
  99. // ------------------------------------------------------------
  100.  
  101.  
  102.  
  103. procedure TForm1.SetDCPixelFormat(Handle: HDC);
  104.  
  105. var
  106.  
  107.  pfd: TPixelFormatDescriptor;
  108.  
  109.  nPixelFormat : Integer;
  110.  
  111. begin
  112.  
  113.  FillChar(pfd,SizeOf(pfd),0);
  114.  
  115.  with pfd do
  116.  
  117.   begin
  118.  
  119.    nSize := SizeOf(pfd);
  120.  
  121.    nVersion := 1;
  122.  
  123.    dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL;
  124.  
  125.    iPixelType := PFD_TYPE_RGBA;
  126.  
  127.    cColorBits := 24;
  128.  
  129.    cDepthBits := 32;
  130.  
  131.    iLayerType := PFD_MAIN_PLANE;
  132.  
  133.   end;
  134.  
  135.  nPixelFormat := ChoosePixelFormat(Handle,@pfd);
  136.  
  137.  SetPixelFormat(Handle, nPixelFormat,@pfd);
  138.  
  139. end;
  140.  
  141.  
  142.  
  143. // ------------------------------------------------------------
  144.  
  145.  
  146.  
  147. procedure TForm1.FormCreate(Sender: TObject);
  148.  
  149. begin
  150.  
  151. SetDCPixelFormat(Canvas.Handle);
  152.  
  153. hrc := wglCreateContext(Canvas.Handle);
  154.  
  155. InitTextures;
  156.  
  157. end;
  158.  
  159.  
  160.  
  161. // ------------------------------------------------------------
  162.  
  163.  
  164.  
  165. procedure TForm1.FormDestroy(Sender: TObject);
  166.  
  167. begin
  168.  
  169. wglDeleteContext(hrc);
  170.  
  171. end;
  172.  
  173.  
  174.  
  175. // ------------------------------------------------------------
  176.  
  177.  
  178.  
  179. procedure TForm1.DrawScene;
  180.  
  181. begin
  182.  
  183.    glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
  184.  
  185.     glLoadIdentity;
  186.  
  187.     gltranslateF(0,0,-0.5);
  188.  
  189.     glBindTexture(GL_TEXTURE_2D,tex);
  190.  
  191.     glBegin(GL_QUADS);
  192.  
  193.         glTexCoord2f(0,0); glVertex3f(-0.5,-0.5,0);
  194.  
  195.         glTexCoord2f(0,1); glVertex3f(-0.5,0.5,0);
  196.  
  197.         glTexCoord2f(1,1); glVertex3f(0.5,0.5,0);
  198.  
  199.         glTexCoord2f(1,0); glVertex3f(0.5,-0.5,0);
  200.  
  201.     glEnd;
  202.  
  203. end;
  204.  
  205.  
  206.  
  207. // ------------------------------------------------------------
  208.  
  209.  
  210.  
  211. procedure TForm1.FormPaint(Sender: TObject);
  212.  
  213. begin
  214.  
  215. wglMakeCurrent(Canvas.Handle, hrc);
  216.  
  217. DrawScene;
  218.  
  219. wglMakeCurrent(0,0);
  220.  
  221. end;
  222.  
  223.  
  224.  
  225. end.


Habe ich irgendwas vergessen? Oder einen Puffer geleert?

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 17:53 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Ich kann kein glEnable(GL_TEXTURE_2D) entdecken, ansonsten bei codepostings, bitte unnötiges zeugs weglassen(z.B. den großteil des Interfaces oder gleich die uploadfunktion benutzen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 18:02 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Hui, das ging ja schnell. :P

Ich habe das glEnable(GL_TEXTURE_2D); hinzugefügt (bei DrawScene).

Aber es passiert trotzdem nichts. Was kann das bloß sein?

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 19:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
hi,

ist deine Textur x mal x pixel groß? Ich meine damit z.B. 16x16 oder 128x128 oder 256x256. AFAIK geht es mit z.B. 128x256 nämlich nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 19:51 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Hallo,

die Textur, die ich verwende ist aus Unreal Tournament. Ich habe mir mal die API-Demo zu dem Tut gezogen und das ganze mit meiner Textur versucht. Da ging es. Aber leide gibt es keine VCL-Demo, damit ich das mal vergleichen könnte, was ich denn falsch mache. :(

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 20:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
wenn ich den Code kopiere seh ich garnix.
Kannst du mal den source mal uploaden? Und woher kommt die Gl.pas und Glu.pas? Ich benutz dafür eigentlich immer OpenGL oder OpenGL12


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 20:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Also den Code habe ich nach diesem <a href='http://www.geocities.com/SiliconValley/5759/kapitel1.html' target='_blank'>Tutorial</a> erstellt.
Ich sitze gerade nicht an meinem Rechner, aber ich werde, wenn ich wieder zuhause bin, das gesamte Projekt mal uploaden.

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 20:25 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Vielleicht wird die Textur nicht richtig geladen? Ist sie quadratisch und reines BMP? Kein RLE drinne oder so?

_________________
"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 31, 2002 21:12 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Wie gesagt, mit dem API-Source von euch, hat er die Textur ordentlich dargestellt.

Aber vielleicht hat jemand von euch das schonmal mit VCL gemacht. :roll:

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 31, 2002 22:12 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Unsere APIs basieren größtenteils IMAO auf Jan Horn Lib... die ist toleranter als die von Glaux! Versuch doch mal mit der die Textur einzuholen.

_________________
"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 31, 2002 22:56 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Ok, ich werde das mal probieren.
Ich sage euch dann bescheid.

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 01, 2002 15:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Es hilft alles nichts. :-(

Ich habe eure Demos compiliert und mit meinen Texturen ausprobiert. Das funkionert wunderbar. Also kann es ja nicht an den Headern liegen.

Ich habe die Dateien mal hochgeladen. Die Projektdateien befinden sich <a href='http://free.pages.at/ex0rzist/delphi/texturen.zip' target='_blank'>hier</a>.
Die compilierte Exe ist <a href='http://free.pages.at/ex0rzist/delphi/project1.zip' target='_blank'>hier</a> zu finden (falls notwendig).


Ich würde mich freuen, wenn jemand von euch Profis sich das mal bitte anschauen könnte. Vielleicht habe ich ja nur ein paar Befehle in der falschen Reihenfolge angeben. :?:

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 01, 2002 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
hhhmmm... so wie ich das sehe, fehlt bei der das OnResizeEvent, weshalb man auch keine Ahnung vom Near- und Farclipping hat und dein Quadrat nicht mehr ganz quadratisch ist... ob das allerdings der Lösung dient


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 01, 2002 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Dass es kein Quadrat ist, ist eigentlich mein geringstes Problem. :wink:

Ich kann bloß nicht kapieren, was ich falsch gemacht habe.
Das ist ja nur eine klitzekleine Szene mit einem einzigen "Quadrat".

Ist denn soweit alles in der richtigen Reihenfolge?
Also Initialisieren der Texturen bei OnFormCreate, glEnable(GL_TEXTURE_2D) vor InitTextures usw?

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 01, 2002 19:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 16:45
Beiträge: 22
Wohnort: Rostock
Ich bins nochmal. 8)

Ich habe es jetzt doch noch hinbekommen. Fragt mich aber nicht, woran es lag. :?:

Ich hatte meinen Code dem von "DCW_Mr_T" aus diesem Forum zum Thema Texturen (siehe <a href='http://dgl.quellcodes.de/forum/viewtopic.php?t=197' target='_blank'>hier</a>) schrittweise angeglichen, bekam jedoch immer Fehler (mit der nvopengl.dll). Kurz vor der totalen Verzweiflung stach mir dann ins Auge, dass ich GL und GLU anstatt von OpenGL eingebunden hatte. Das also geändert und nun läuft es endlich. Puuh ... Bild

Dnke für eure Bemühungen.

_________________
_________ <br> <br>Ex0rzist


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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