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

Aktuelle Zeit: Di Jul 08, 2025 16:26

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur-Probleme
BeitragVerfasst: Sa Dez 08, 2007 19:10 
Offline
DGL Member

Registriert: Do Dez 06, 2007 20:12
Beiträge: 5
Hi erstmal. Bin noch ein richtiger Anfänger, also macht euch auf dumme Fragen gefasst :) .
Mein Problem:
Ich erzeuge ein Rechteck, worauf ich eine ganz normale blaue Textur heraufbekommen will. Die tga-Datein kann er nicht laden, also versuche ich es mit jpg oder bmp. Das Laden funktioniert wohl soweit ganz gut, aber die Farbe zeigt er nicht richtig an. Es sind immer graue, waagerechte Striche dazwischen und auch ganz verschiedene Farben.
Der Quellcode stammt noch ganz aus den Tutorials, also da sind wahrscheinlich auch Sachen drinnen, die gar nicht sein müssen. Mein Ziel ist es, etwas in 2D darzustellen, deswegen gl_Ortho.
Code:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, DGLOpenGL, ExtCtrls, Textures;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Timer1: TTimer;
  12.     Image1: TImage;
  13.     procedure FormCreate(Sender: TObject);
  14.     procedure FormResize(Sender: TObject);
  15.     procedure FormDestroy(Sender: TObject);
  16.     procedure Timer1Timer(Sender: TObject);
  17.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  18.   private { Private-Deklarationen }
  19.     FrameCount                        : Cardinal; //FrameCounter
  20.     procedure SetupGl;
  21.     procedure Render;
  22.     procedure ErrorHandler;
  23.   public { Public-Deklarationen }
  24.     DC                                : HDC;  //Handle auf Zeichenfläche
  25.     RC                                : HGLRC;//Rendering Context
  26.     groesser, kleiner                 : Boolean;
  27.     MyTex                             : glUInt;
  28.     Breite, Hoehe, Tiefe              : Integer;
  29.   end;
  30.  
  31. var
  32.   Form1: TForm1;
  33.  
  34. const
  35.   NearClipping = 1;
  36.   FarClipping  = 1000;
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44.   Hoehe := Form1.Height;
  45.   Breite:= Form1.Width;
  46.   Tiefe := 1;
  47.   groesser := true;
  48.   kleiner := false;
  49.   DC:= GetDC(Handle);
  50.   if not InitOpenGL then Application.Terminate;
  51.   RC:= CreateRenderingContext( DC,
  52.                                [opDoubleBuffered],
  53.                                32,
  54.                                24,
  55.                                0,0,0,
  56.                                0);
  57.   ActivateRenderingContext(DC, RC);
  58.   SetupGL;
  59.   Form1.Width := Screen.Width;
  60.   Form1.Height := Screen.Height;
  61.   Form1.Top := 0;
  62.   Form1.Left := 0;
  63. end;
  64.  
  65. procedure TForm1.SetupGL;
  66. begin
  67.   glClearColor(0.0, 0.0, 0.0, 0.0);
  68.   glEnable(GL_TEXTURE_2D);
  69.   LoadTexture('G:\Delphi 4 Projekte\Testprojekte\OpenGL\5\Test.bmp', MyTex, False);
  70. end;
  71.  
  72. procedure TForm1.FormResize(Sender: TObject);
  73. begin
  74.   glViewport(0, 0, ClientWidth, ClientHeight);
  75.   glMatrixMode(GL_PROJECTION);
  76.   glLoadIdentity;
  77.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  78.  
  79.   glMatrixMode(GL_MODELVIEW);
  80.   glLoadIdentity;
  81. end;
  82.  
  83. procedure TForm1.FormDestroy(Sender: TObject);
  84. begin
  85.   DeactivateRenderingContext;
  86.   DestroyRenderingContext(RC);
  87.   ReleaseDC(Handle, DC);
  88. end;
  89.  
  90. procedure TForm1.Render;
  91. begin
  92.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  93.  
  94.   glMatrixMode(GL_PROJECTION);
  95.   glLoadIdentity;
  96.   glViewport(0,0,ClientWidth,ClientHeight);
  97.   glMatrixMode(GL_MODELVIEW);
  98.   glLoadIdentity;
  99.   glOrtho(0,640,480,0,0,128);
  100.   glBindTexture(GL_TEXTURE_2D, MyTex);
  101.   glBegin(GL_QUADS);
  102.     glTexCoord2f(0,0); glVertex3f(-Breite/2, -Hoehe/2, -Tiefe);
  103.     glTexCoord2f(1,0); glVertex3f(+Breite/2, -Hoehe/2, -Tiefe);
  104.     glTexCoord2f(1,1); glVertex3f(+Breite/2, +Hoehe/2, -Tiefe);
  105.     glTexCoord2f(0,1); glVertex3f(-Breite/2, +Hoehe/2, -Tiefe);
  106.   glEnd;
  107.  
  108.   SwapBuffers(DC);
  109. end;
  110.  
  111. procedure TForm1.Timer1Timer(Sender: TObject);
  112. begin
  113.    inc(FrameCount);
  114.    Render;
  115.    If FrameCount = 20 then
  116.       begin
  117.            ErrorHandler;
  118.            FrameCount := 0;
  119.       end;
  120. end;
  121.  
  122. procedure TForm1.ErrorHandler;
  123. begin
  124.   Form1.Caption := gluErrorString(glGetError);
  125. end;
  126.  
  127. procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
  128. begin
  129.   if Key=#27 then close;
  130. end;
  131.  
  132. end.


Freue mich auf die Antworten, Looper


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 08, 2007 20:05 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Die falschen Farben könnten darauf hindeuten, dass LoadTexture einen Fehler hat. Versuche mal die .bmp mit einem anderen Programm zu speichern. Wenn die .bmp in 32-bpp gespeichert ist verusche sie in 24-bpp zu speichern oder umgekehrt.
Welche Formate nimmt LoadTexture denn überhaupt an? Du sagtest ja z.B. das .tga nicht geht. Jetzt wäre es wichtig zu wissen welche anderen Beschränkungen es gibt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 08, 2007 20:48 
Offline
DGL Member

Registriert: Do Dez 06, 2007 20:12
Beiträge: 5
Erstmal vielen Dank für die schnelle Hilfe, Werde mich in den nächsten Tagen wieder melden, ob es nun klappt.
mfg Looper


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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 | 16 Queries | GZIP : On ]