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

Aktuelle Zeit: Fr Jul 11, 2025 06:03

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Nov 25, 2008 21:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 18, 2008 11:10
Beiträge: 23
Wohnort: Hamburg
Hallo
sry. das ich nochmal störe...

soo also ich habe einen Würfel aber die Textur die ich daruaf laden will klappt nicht ... könnten ihr mir Helfen?
Danke---

Code:
  1.  
  2. unit wow;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8.   Dialogs, dglOpenGL, StdCtrls, SDL, SDL_Image;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  13.     procedure FormDestroy(Sender: TObject);
  14.     procedure FormResize(Sender: TObject);
  15.     procedure FormCreate(Sender: TObject);
  16.     procedure IdleHandler(Sender: TObject; var Done: Boolean);
  17.   private
  18.    StartTime, TimeCount, FrameCount  : Cardinal; //FrameCounter
  19.     Frames, DrawTime                  : Cardinal; //& Timebased Movement
  20.     procedure SetupGL;
  21.     procedure Render;
  22.     procedure ErrorHandler;
  23.     procedure drawquads;
  24.     procedure LoadTextur;
  25.   public
  26.     DC                                : HDC;  //Handle auf Zeichenfläche
  27.     RC                                : HGLRC;//Rendering Context
  28.   end;
  29.  
  30. var
  31.   Form1: TForm1;
  32.   sonrot,sonrot2,weite,a, winkel: Double;
  33.   tex : PSDL_Surface;
  34. const
  35.   NearClipping = 1;
  36.   FarClipping  = 1000;
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41.  
  42.  
  43. procedure TForm1.FormCreate(Sender: TObject);
  44. begin
  45. //Initialisierung von OpenGL
  46.  
  47.  DC:= GetDC(Handle);
  48.   if not InitOpenGL then Application.Terminate;
  49.   RC:= CreateRenderingContext( DC,
  50.                                [opDoubleBuffered],
  51.                                32,
  52.                                24,
  53.                                0,
  54.                                0,
  55.                                0,
  56.                                0);
  57.   ActivateRenderingContext(DC, RC);
  58.   SetupGL;
  59.   LoadTextur;
  60.   Application.OnIdle := IdleHandler;
  61. end;
  62.  
  63. procedure TForm1.SetupGL;
  64. begin
  65.   glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
  66.   glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  67.   glEnable(GL_CULL_FACE);           //Backface Culling aktivieren(damit schneller)
  68. end;
  69.  
  70. procedure TForm1.FormResize(Sender: TObject);
  71. var tmpBool : Boolean;
  72. begin
  73.   glViewport(0, 0, ClientWidth, ClientHeight);
  74.   glMatrixMode(GL_PROJECTION);
  75.   glLoadIdentity;
  76.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  77.  
  78.   glMatrixMode(GL_MODELVIEW);
  79.   glLoadIdentity;
  80.   IdleHandler(Sender, tmpBool);
  81. end;
  82.  
  83. procedure TForm1.FormDestroy(Sender: TObject);
  84. begin
  85.   DeactivateRenderingContext;
  86.   DestroyRenderingContext(RC);
  87.   ReleaseDC(Handle, DC);
  88. end;
  89.  
  90.  
  91. procedure TForm1.LoadTextur;
  92. var TexID: gluInt;
  93. begin
  94. tex := IMG_Load('./kachel1.jpg');
  95.   if assigned(tex) then
  96.   begin    
  97.     glGenTextures(1, @TexID);
  98.     glBindTexture(GL_TEXTURE_2D, TexID);
  99.  
  100.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  101.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  102.  
  103.     // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
  104.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  105.  
  106.     SDL_FreeSurface(tex);
  107.   end;
  108. end;
  109.  
  110. procedure TForm1.Render;
  111.  
  112. begin
  113.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);     //Farbpuffer und Tiefenpuffer gelöscht
  114.  
  115.   glMatrixMode(GL_PROJECTION);
  116.   glLoadIdentity;
  117.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  118.  
  119.   glMatrixMode(GL_MODELVIEW);
  120.   glLoadIdentity;
  121.  
  122. glTranslatef(0,-0.3,-10);
  123.  
  124.   sonrot:= sonrot + (0.01*Drawtime);
  125.   If (sonrot > 360) then sonrot := sonrot - 360;
  126.  
  127.   sonrot2:= sonrot2 - (0.1*Drawtime);
  128.   If (sonrot2 > 360) then sonrot2 := sonrot - 360;
  129. //Rotatef(a,0,1,0);
  130. glTranslatef(0,0,weite);
  131. glTranslatef(winkel,0,0);
  132.  
  133.   glDisable(GL_CULL_FACE);
  134.  
  135.   glrotatef(10,1,0,0);
  136.   glrotatef(sonrot,0,1,0);
  137.   glColor3ub(255,255,0);
  138.  
  139.   drawquads;
  140.  
  141.  
  142.   SwapBuffers(DC);
  143. end;
  144.  
  145. procedure TForm1.drawquads;
  146.   begin
  147.   glEnable(GL_TEXTURE_2D);
  148.   glBegin(GL_QUADS);
  149.       glTexCoord2f(0,0); glVertex3f(-1,-1, 1);
  150.       glTexCoord2f(0,1); glVertex3f( -1,1, 1);
  151.       glTexCoord2f(1,1); glVertex3f( 1,1, 1);
  152.       glTexCoord2f(1,0); glVertex3f( 1,-1, 1);
  153.  
  154.       glTexCoord2f(0,0); glVertex3f(-1,-1,1);
  155.       glTexCoord2f(0,1); glVertex3f(-1,1,1);
  156.       glTexCoord2f(1,1); glVertex3f(-1,1, -1);
  157.       glTexCoord2f(1,0); glVertex3f(-1,-1,-1);
  158.  
  159.       glTexCoord2f(0,0); glVertex3f(1,1,1);
  160.       glTexCoord2f(0,1); glVertex3f(1,-1,1);
  161.       glTexCoord2f(1,1); glVertex3f(1,-1,-1);
  162.       glTexCoord2f(1,0); glVertex3f(1,1,-1);
  163.  
  164.       glVertex3f(-1,1,-1);
  165.       glVertex3f( 1, 1,-1);
  166.       glVertex3f( 1,-1,-1);
  167.       glVertex3f( -1,-1,-1);
  168.  
  169. //      glVertex3f(-1,-1, 0);
  170. //      glVertex3f(-1, 1, 0);
  171. //      glVertex3f( -1,-1,0);
  172. //      glVertex3f(-1,1, 0);
  173. //
  174. //      glVertex3f(1,-1, 0);
  175. //      glVertex3f(1, 1, 0);
  176. //      glVertex3f(1,-1,0);
  177. //      glVertex3f(1,1, 0);
  178.   glEnd();
  179. end;
  180. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  181.  
  182. begin
  183.  
  184.   StartTime:= GetTickCount;
  185.   Render;
  186.   DrawTime:= GetTickCount - StartTime;
  187.   Inc(TimeCount, DrawTime);
  188.   Inc(FrameCount);
  189.  
  190.   if TimeCount >= 1000 then begin
  191.     Frames:= FrameCount;
  192.     TimeCount:= TimeCount - 1000;
  193.     FrameCount:= 0;
  194.     Caption:= InttoStr(Frames) + 'FPS';
  195.     ErrorHandler;
  196.   end;
  197.  
  198.   Done:= false;
  199. end;
  200.  
  201. procedure TForm1.ErrorHandler;
  202. begin
  203.   Form1.Caption := gluErrorString(glGetError);
  204. end;
  205.  
  206. procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
  207. begin
  208. if Key = 'a' then
  209. winkel := winkel+1;
  210. if Key = 'd' then
  211. winkel := winkel-1;
  212. if Key = 'w' then
  213. weite := weite+1;
  214. if Key = 's' then
  215. weite := weite-1;
  216. if Key = 'q' then
  217. a:= a-1;
  218. if Key = 'e'then
  219. a:= a+1;end;
  220.  
  221.  
  222.  
  223. end.


...


Zuletzt geändert von uci am Di Nov 25, 2008 22:53, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 25, 2008 22:24 
Offline
DGL Member

Registriert: Mi Nov 12, 2008 18:27
Beiträge: 134
würdest du dein problem vielleicht etwas präziser ausdrücken?

das was du hier gepostet hast ist der easySDL code und das hat nix mit der VCL zu tun sondern ist API auf nem extrem vereinfachten Level.

Also ich würd dir empfehlen das easySDL template als grundlage für die tutorials zu nehmen und den code dann selbst zu schreiben und nur bei problemen in die beispiele aus dem sdk zu schauen.
Falls dir damit irgendwie geholfen ist ....
ansonsten kann ich nur mein eingangs statement wiederholen - ohne präzise frage keine antwort.

mfg grey


(ich hoffe ich bin nicht zu schroff, aber erklärt mir mal bitte einer den sinn von diesem post? :wink: )


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 25, 2008 22:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 18, 2008 11:10
Beiträge: 23
Wohnort: Hamburg
Okay sry es funktioniert alles... :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2008 18:33 
Offline
DGL Member

Registriert: Mi Nov 12, 2008 18:27
Beiträge: 134
Lol na dann. ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 27, 2008 09:43 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@uci: Kannst du kurz erklären wo der Fehler lag. So das andere noch was mitnehmen können.

Nebenbei: Es ist immer besser den Fehler selber zu finden als das andere machen zu lassen. Der Lerneffekt ist da am größten.

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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 ]