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

Aktuelle Zeit: Fr Jul 18, 2025 00:06

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
 Betreff des Beitrags: Bewegung in einem 3D-Raum
BeitragVerfasst: Do Dez 30, 2004 23:39 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Hi,

Also ich habe da so ein problem...
Ich habe einen Quellcode geschrieben, aber er funktioniert einfach nicht, hmmm ...
Er soll bewirken dass ich mich mit den Pfeiltasten mich nach Links und nach Rechts bewegen kann, aber es funktioniert einfach nicht.

Der Debugger zeigt nur folgendes an:

Code:
  1.  
  2. [Hinweis] ego_shooter_pas.pas(186): Auf 'Rotate' zugewiesener Wert wird niemals benutzt
  3. [Warnung] ego_shooter_pas.pas(179): Variable 'Rotate' ist möglicherweise nicht initialisiert worden
  4.  


aber danach komplimiert er es dann doch schließlich. Dann sehe ich da die Welt... aber ich kann mich nicht bewegen.

Ich poste hier einfach mal den gesamten Quellcode:

Code:
  1.  
  2.  
  3. unit ego_shooter_pas;
  4.  
  5. interface
  6.  
  7. uses
  8.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  9.   Dialogs, OpenGL12, AppEvnts;
  10.  
  11. type
  12.   TForm1 = class(TForm)
  13.     ApplicationEvents1: TApplicationEvents;
  14.     procedure FormCreate(Sender: TObject);
  15.     procedure InitGL;
  16.     procedure DrawScene;
  17.     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  18.     procedure DrawLandscape;
  19.     procedure CheckKeys;
  20.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  21.     Procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  22.   private
  23.     { Private-Deklarationen }
  24.   public
  25.     { Public-Deklarationen }
  26.   end;
  27.  
  28. procedure SetDCPixelFormat(Handle: HDC);
  29.  
  30. var
  31.   Form1: TForm1;
  32.   h_DC: hDC;  
  33.   hRC: HGLRC;
  34.   Keys: Array[0..255] of Boolean;
  35.   Rotate: Single;
  36.    
  37. implementation
  38.  
  39. {$R *.dfm}
  40.  
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44.    InitOpenGL;
  45.    h_DC:=GetDC(Handle);
  46.    SetDCPixelFormat(h_DC);
  47.    hRC:=wglCreateContext(h_DC);
  48.    wglMakeCurrent(h_DC,hRC);
  49.    InitGL;
  50.    Application.OnIdle := ApplicationEvents1Idle;
  51. end;
  52.  
  53.  
  54. procedure TForm1.ApplicationEvents1Idle(Sender: TObject;  
  55. var
  56.   Done: Boolean);
  57. begin  
  58.   DrawScene;  
  59.   Done:=False;  
  60. end;
  61.  
  62.  
  63. procedure TForm1.DrawScene;
  64. begin
  65.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  66.   glLoadIdentity;
  67.  
  68.   CheckKeys;
  69.   glRotate(Rotate,0,1,0);
  70.   DrawLandscape;
  71.  
  72.   SwapBuffers(h_DC);
  73. end;
  74.  
  75.  
  76. procedure TForm1.InitGL;
  77. begin  
  78.   glClearColor(0,0,0,0);
  79.   glClearDepth(1);
  80.   glDepthFunc(GL_LESS);
  81.   glShadeModel(GL_SMOOTH);  
  82.   glEnable(GL_DEPTH_TEST);  
  83.  
  84.   glViewport(0,0,Width,Height);  
  85.   glMatrixMode(GL_PROJECTION);  
  86.   glLoadIdentity;  
  87.   gluPerspective(45,Width/Height,1,100);  
  88.   glMatrixMode(GL_MODELVIEW);  
  89. end;
  90.  
  91.  
  92. procedure SetDCPixelFormat(Handle: HDC);
  93. var
  94.   nPixelFormat: GLUint;
  95. const
  96.   pfd: PIXELFORMATDESCRIPTOR = (
  97.       nSize: sizeof( PIXELFORMATDESCRIPTOR );
  98.       nVersion: 1;
  99.       dwFlags: PFD_DRAW_TO_WINDOW
  100.       or PFD_SUPPORT_OPENGL
  101.       or PFD_DOUBLEBUFFER;
  102.       iPixelType: PFD_TYPE_RGBA;
  103.       cColorBits: 16;
  104.       cRedBits: 0;
  105.       cRedShift: 0;
  106.       cGreenBits: 0;
  107.       cBlueBits: 0;
  108.       cBlueShift: 0;
  109.       cAlphaBits: 0;
  110.       cAlphaShift: 0;
  111.       cAccumBits: 0;
  112.       cAccumRedBits: 0;
  113.       cAccumGreenBits: 0;
  114.       cAccumBlueBits: 0;
  115.       cAccumAlphaBits: 0;
  116.       cDepthBits: 16;
  117.       cStencilBits: 0;
  118.       cAuxBuffers: 0;
  119.       iLayerType: PFD_MAIN_PLANE;
  120.       bReserved: 0;
  121.       dwLayerMask: 0;
  122.       dwVisibleMask: 0;
  123.       dwDamageMask: 0
  124.   );
  125. begin
  126.    nPixelFormat:=ChoosePixelFormat(h_DC, @pfd);
  127.    SetPixelFormat(h_DC,nPixelFormat,@pfd);
  128. end;
  129.  
  130.  
  131. procedure TForm1.DrawLandscape;
  132. var
  133.   j, i: Integer;
  134.   r, wi, w, x, y: Double;
  135. begin
  136.   wi:=360 / 40;
  137.   glColor3f(0.0,1.0,0.0);
  138.   glBegin(GL_LINES);
  139.   for i:=1 to 40 do begin
  140.     w:=(PI / 180) * (wi * i - (wi / 2));
  141.     x:=(-5 / 2) + (5 / 2 + cos(w) * (5 + 5) / 2);
  142.     y:=(5 / 2) + (-5 / 2 + sin(w) * (-5 - 5) / 2);
  143.     glVertex3f(0.0,-0.4,0.0);
  144.     glVertex3f(x,-0.4,y);
  145.   end;
  146.   glEnd;
  147.   r:=0;
  148.   for j:=1 to 11 do begin
  149.     glBegin(GL_LINE_LOOP);
  150.     for i:=1 to 40 do begin
  151.       w:=(PI / 180) * (wi * i - (wi / 2));
  152.       x:=(-r / 2) + (r / 2 + cos(w) * (r + r) / 2);
  153.       y:=(r / 2) + (-r / 2 + sin(w) * (-r - r) / 2);
  154.       glVertex3f(x,-0.4,y);
  155.     end;
  156.     glEnd;
  157.     r:=r + 0.5;
  158.   end;
  159. end;
  160.  
  161.  
  162. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  163.   Shift: TShiftState);
  164. begin
  165.   Keys[Key]:=true;
  166. end;
  167.  
  168.  
  169. procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  170.   Shift: TShiftState);
  171. begin
  172.   Keys[Key]:=false;
  173. end;
  174.  
  175.  
  176. procedure TForm1.CheckKeys;
  177. var
  178.   Rotate: Single;
  179. begin
  180.   if Keys[VK_LEFT] then begin
  181.     Rotate:=Rotate - 0.5;
  182.     if Rotate<0 then
  183.       Rotate:=Rotate + 360;
  184.   end;
  185.   if Keys[VK_RIGHT] then begin
  186.     Rotate:=Rotate + 0.5;
  187.     if Rotate>360 then
  188.       Rotate:=Rotate - 360;
  189.   end;
  190. end;
  191.  
  192. end.
  193.  
  194.  


Würde mich wirklich auf eine Antwort freuen ....
P.S. Das ist aus AYA's Tutorial ;-)

MFG
Ice-X2


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 30, 2004 23:58 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja is auch logisch...Rotate is nur lokal definiert. Machs global und es sollte gehen. :wink:

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 11:25 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Sorry, ich bin aber noch ein kleiner Anfänger in Sachen "OpenGL"... :oops:

Könntest du mir dass ein bisschen genauer beschreiben ?

Hab mal so rumprobiert hat aber auch nicht funktioniert :

Code:
  1.  
  2. Rotate: Global;
  3.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 11:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Also das war gaaaanz anders gemeint. Global etwas definieren heisst, das die Variable immer und überall verwendet werden kann, nicht nur in einer Prozedur. Also einfach zB in folgenden Teil einfügen:
Code:
  1. public
  2.     { Public-Deklarationen }
  3.     Rotate: Extended;
  4.   end;


Aber das sind schon krasse Lücken, die du da im Bereich Delphi hast. Ich würde dir empfehlen, erst mal ein Buch zu kaufen.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 13:35 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Ich weß jetzt einfach nicht mehr weiter ... habs jetzt so gemacht und es funktioniert immer noch nicht ...

Code:
  1.  
  2. unit ego_shooter_pas;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8.   Dialogs, OpenGL12, AppEvnts;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     ApplicationEvents1: TApplicationEvents;
  13.     procedure FormCreate(Sender: TObject);
  14.     procedure InitGL;
  15.     procedure DrawScene;
  16.     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  17.     procedure DrawLandscape;
  18.     procedure CheckKeys;
  19.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  20.     Procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  21.   private
  22.     { Private-Deklarationen }
  23.   public
  24.     { Public-Deklarationen }
  25.     Rotate: Extended;
  26.   end;
  27.  
  28. procedure SetDCPixelFormat(Handle: HDC);
  29.  
  30. var
  31.   Form1: TForm1;
  32.   h_DC: hDC;  
  33.   hRC: HGLRC;
  34.   Keys: Array[0..255] of Boolean;
  35.   Rotate: Single;
  36.    
  37. implementation
  38.  
  39. {$R *.dfm}
  40.  
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44.    InitOpenGL;
  45.    h_DC:=GetDC(Handle);
  46.    SetDCPixelFormat(h_DC);
  47.    hRC:=wglCreateContext(h_DC);
  48.    wglMakeCurrent(h_DC,hRC);
  49.    InitGL;
  50.    Application.OnIdle := ApplicationEvents1Idle;
  51. end;
  52.  
  53.  
  54. procedure TForm1.ApplicationEvents1Idle(Sender: TObject;  
  55. var
  56.   Done: Boolean);
  57. begin  
  58.   DrawScene;  
  59.   Done:=False;  
  60. end;
  61.  
  62.  
  63. procedure TForm1.DrawScene;
  64. begin
  65.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  66.   glLoadIdentity;
  67.  
  68.   CheckKeys;
  69.   glRotate(Rotate,0,1,0);
  70.   DrawLandscape;
  71.  
  72.   SwapBuffers(h_DC);
  73. end;
  74.  
  75.  
  76. procedure TForm1.InitGL;
  77. begin  
  78.   glClearColor(0,0,0,0);
  79.   glClearDepth(1);
  80.   glDepthFunc(GL_LESS);
  81.   glShadeModel(GL_SMOOTH);  
  82.   glEnable(GL_DEPTH_TEST);  
  83.  
  84.   glViewport(0,0,Width,Height);  
  85.   glMatrixMode(GL_PROJECTION);  
  86.   glLoadIdentity;  
  87.   gluPerspective(45,Width/Height,1,100);  
  88.   glMatrixMode(GL_MODELVIEW);  
  89. end;
  90.  
  91.  
  92. procedure SetDCPixelFormat(Handle: HDC);
  93. var
  94.   nPixelFormat: GLUint;
  95. const
  96.   pfd: PIXELFORMATDESCRIPTOR = (
  97.       nSize: sizeof( PIXELFORMATDESCRIPTOR );
  98.       nVersion: 1;
  99.       dwFlags: PFD_DRAW_TO_WINDOW
  100.       or PFD_SUPPORT_OPENGL
  101.       or PFD_DOUBLEBUFFER;
  102.       iPixelType: PFD_TYPE_RGBA;
  103.       cColorBits: 16;
  104.       cRedBits: 0;
  105.       cRedShift: 0;
  106.       cGreenBits: 0;
  107.       cBlueBits: 0;
  108.       cBlueShift: 0;
  109.       cAlphaBits: 0;
  110.       cAlphaShift: 0;
  111.       cAccumBits: 0;
  112.       cAccumRedBits: 0;
  113.       cAccumGreenBits: 0;
  114.       cAccumBlueBits: 0;
  115.       cAccumAlphaBits: 0;
  116.       cDepthBits: 16;
  117.       cStencilBits: 0;
  118.       cAuxBuffers: 0;
  119.       iLayerType: PFD_MAIN_PLANE;
  120.       bReserved: 0;
  121.       dwLayerMask: 0;
  122.       dwVisibleMask: 0;
  123.       dwDamageMask: 0
  124.   );
  125. begin
  126.    nPixelFormat:=ChoosePixelFormat(h_DC, @pfd);
  127.    SetPixelFormat(h_DC,nPixelFormat,@pfd);
  128. end;
  129.  
  130.  
  131. procedure TForm1.DrawLandscape;
  132. var
  133.   j, i: Integer;
  134.   r, wi, w, x, y: Double;
  135. begin
  136.   wi:=360 / 40;
  137.   glColor3f(0.0,1.0,0.0);
  138.   glBegin(GL_LINES);
  139.   for i:=1 to 40 do begin
  140.     w:=(PI / 180) * (wi * i - (wi / 2));
  141.     x:=(-5 / 2) + (5 / 2 + cos(w) * (5 + 5) / 2);
  142.     y:=(5 / 2) + (-5 / 2 + sin(w) * (-5 - 5) / 2);
  143.     glVertex3f(0.0,-0.4,0.0);
  144.     glVertex3f(x,-0.4,y);
  145.   end;
  146.   glEnd;
  147.   r:=0;
  148.   for j:=1 to 11 do begin
  149.     glBegin(GL_LINE_LOOP);
  150.     for i:=1 to 40 do begin
  151.       w:=(PI / 180) * (wi * i - (wi / 2));
  152.       x:=(-r / 2) + (r / 2 + cos(w) * (r + r) / 2);
  153.       y:=(r / 2) + (-r / 2 + sin(w) * (-r - r) / 2);
  154.       glVertex3f(x,-0.4,y);
  155.     end;
  156.     glEnd;
  157.     r:=r + 0.5;
  158.   end;
  159. end;
  160.  
  161.  
  162. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  163.   Shift: TShiftState);
  164. begin
  165.   Keys[Key]:=true;
  166. end;
  167.  
  168.  
  169. procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  170.   Shift: TShiftState);
  171. begin
  172.   Keys[Key]:=false;
  173. end;
  174.  
  175.  
  176. procedure TForm1.CheckKeys;
  177. var
  178.   Rotate: Single;
  179. begin
  180.   if Keys[VK_LEFT] then begin
  181.     Rotate:=Rotate - 0.5;
  182.     if Rotate<0 then
  183.       Rotate:=Rotate + 360;
  184.   end;
  185.   if Keys[VK_RIGHT] then begin
  186.     Rotate:=Rotate + 0.5;
  187.     if Rotate>360 then
  188.       Rotate:=Rotate - 360;
  189.   end;
  190. end;
  191.  
  192. end.
  193.  
  194.  


... bitte um hilfe ...
... und ich wünsche allen einen guten rutsch in das neue Jahr ! :wink:

P.S. Hab ein Delphi Buch daheim ... bin nur ein bisschen zu faul zum lesen... :oops: ... werds aber mal in die Hand nehmen müssen (GoTo Delphi 6 heißt es .)

MFG
Ice-X2


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 13:44 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Eine lokal definierte Variable mit selben namen überdeckt immer eine gleichnamige globale Variable. Du must schon noch deine Rotatevariable in deinem Unterprogramm entfernen, damit das geht. :roll:

Du hast echt glück, dass du das net bei Delphi-Groubs geschrieben hast DragonsLear hätt dich in der Luft zerrissen. :wink:

Du solltest Dir mal die Tutorials zu Delphi bei Delphi-Treff angucken. http://www.delphi-source.de/grundlagen/sprache/

Das is kein Hinweis, das is ein Befehl! 8)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 16:03 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Zu befehl Sir, hab es mir jetzt KOMPLETT heruntergeladen, werds mir auch mal anschauen :wink:

Aber es funzt immer noch nicht ... :oops:
Tut mir echt leid das ich dich so nerver aber in aya's Tutorial steht es so drin, kannst du mir sagen warum ???

Der CheckKeys Prozess steht jetzt so da :
Code:
  1.  
  2. procedure TForm1.CheckKeys;
  3. begin
  4.   if Keys[VK_LEFT] then begin
  5.     Rotate:=Rotate - 0.5;
  6.     if Rotate<0 then
  7.       Rotate:=Rotate + 360;
  8.   end;
  9.   if Keys[VK_RIGHT] then begin
  10.     Rotate:=Rotate + 0.5;
  11.     if Rotate>360 then
  12.       Rotate:=Rotate - 360;
  13.   end;
  14. end;
  15.  
  16.  

dass so :
Code:
  1.  
  2. public
  3.     { Public-Deklarationen }
  4.     Rotate: Extended;
  5.   end;
  6.  

und dass so :
Code:
  1.  
  2. var
  3.   Form1: TForm1;
  4.   h_DC: hDC;  
  5.   hRC: HGLRC;
  6.   Keys: Array[0..255] of Boolean;
  7.  


.. und der rest is so wie er ist...
:|


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Also erstmal Hi!

Zitat:
Er soll bewirken dass ich mich mit den Pfeiltasten mich nach Links und nach Rechts bewegen kann, aber es funktioniert einfach nicht.


Sagmal, du willst verschieben oder drehen?
Najagut, du hast erstmal rotate drinne.

Wenn der sagt das die nichtmal initialisiert wird, hast du mal nen Haltepunkt(breakpoint) in Checkkeys gesetzt um zu gucken ob das ausgeführt wird?
Irgendwo muss da ja nen flüchtigkeitsfehler sein.

EDIT;
habe gerade gesehen das du in CheckKeys auch nochmal ein rotate : single drinne hast.
RAUS MIT ABER ZAGGI ^^

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: <Ohne Worte>
BeitragVerfasst: Fr Dez 31, 2004 17:07 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Ich glaub ich lass es bleiben ...

<Ohne Worte>

Code:
  1.  
  2. unit ego_shooter_pas;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8.   Dialogs, OpenGL12, AppEvnts;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     ApplicationEvents1: TApplicationEvents;
  13.     procedure FormCreate(Sender: TObject);
  14.     procedure InitGL;
  15.     procedure DrawScene;
  16.     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  17.     procedure DrawLandscape;
  18.     procedure CheckKeys;
  19.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  20.     Procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  21.   private
  22.     { Private-Deklarationen }
  23.   public
  24.     { Public-Deklarationen }
  25.  
  26.   end;
  27.  
  28. procedure SetDCPixelFormat(Handle: HDC);
  29.  
  30. var
  31.   Form1: TForm1;
  32.   h_DC: hDC;
  33.   hRC: HGLRC;
  34.   Keys: Array[0..255] of Boolean;
  35.   Rotate: Extended;
  36.  
  37. implementation
  38.  
  39. {$R *.dfm}
  40.  
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44.    InitOpenGL;
  45.    h_DC:=GetDC(Handle);
  46.    SetDCPixelFormat(h_DC);
  47.    hRC:=wglCreateContext(h_DC);
  48.    wglMakeCurrent(h_DC,hRC);
  49.    InitGL;
  50.    Application.OnIdle := ApplicationEvents1Idle;
  51. end;
  52.  
  53.  
  54. procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  55. var
  56.   Done: Boolean);
  57. begin
  58.   DrawScene;
  59.   Done:=False;
  60. end;
  61.  
  62.  
  63. procedure TForm1.DrawScene;
  64. begin
  65.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  66.   glLoadIdentity;
  67.  
  68.   CheckKeys;
  69.   glRotate(Rotate,0,1,0);
  70.   DrawLandscape;
  71.  
  72.   SwapBuffers(h_DC);
  73. end;
  74.  
  75.  
  76. procedure TForm1.InitGL;
  77. begin
  78.   glClearColor(0,0,0,0);
  79.   glClearDepth(1);
  80.   glDepthFunc(GL_LESS);
  81.   glShadeModel(GL_SMOOTH);
  82.   glEnable(GL_DEPTH_TEST);
  83.  
  84.   glViewport(0,0,Width,Height);
  85.   glMatrixMode(GL_PROJECTION);
  86.   glLoadIdentity;
  87.   gluPerspective(45,Width/Height,1,100);
  88.   glMatrixMode(GL_MODELVIEW);
  89. end;
  90.  
  91.  
  92. procedure SetDCPixelFormat(Handle: HDC);
  93. var
  94.   nPixelFormat: GLUint;
  95. const
  96.   pfd: PIXELFORMATDESCRIPTOR = (
  97.       nSize: sizeof( PIXELFORMATDESCRIPTOR );
  98.       nVersion: 1;
  99.       dwFlags: PFD_DRAW_TO_WINDOW
  100.       or PFD_SUPPORT_OPENGL
  101.       or PFD_DOUBLEBUFFER;
  102.       iPixelType: PFD_TYPE_RGBA;
  103.       cColorBits: 16;
  104.       cRedBits: 0;
  105.       cRedShift: 0;
  106.       cGreenBits: 0;
  107.       cBlueBits: 0;
  108.       cBlueShift: 0;
  109.       cAlphaBits: 0;
  110.       cAlphaShift: 0;
  111.       cAccumBits: 0;
  112.       cAccumRedBits: 0;
  113.       cAccumGreenBits: 0;
  114.       cAccumBlueBits: 0;
  115.       cAccumAlphaBits: 0;
  116.       cDepthBits: 16;
  117.       cStencilBits: 0;
  118.       cAuxBuffers: 0;
  119.       iLayerType: PFD_MAIN_PLANE;
  120.       bReserved: 0;
  121.       dwLayerMask: 0;
  122.       dwVisibleMask: 0;
  123.       dwDamageMask: 0
  124.   );
  125. begin
  126.    nPixelFormat:=ChoosePixelFormat(h_DC, @pfd);
  127.    SetPixelFormat(h_DC,nPixelFormat,@pfd);
  128. end;
  129.  
  130.  
  131. procedure TForm1.DrawLandscape;
  132. var
  133.   j, i: Integer;
  134.   r, wi, w, x, y: Double;
  135. begin
  136.   wi:=360 / 40;
  137.   glColor3f(0.0,1.0,0.0);
  138.   glBegin(GL_LINES);
  139.   for i:=1 to 40 do begin
  140.     w:=(PI / 180) * (wi * i - (wi / 2));
  141.     x:=(-5 / 2) + (5 / 2 + cos(w) * (5 + 5) / 2);
  142.     y:=(5 / 2) + (-5 / 2 + sin(w) * (-5 - 5) / 2);
  143.     glVertex3f(0.0,-0.4,0.0);
  144.     glVertex3f(x,-0.4,y);
  145.   end;
  146.   glEnd;
  147.   r:=0;
  148.   for j:=1 to 11 do begin
  149.     glBegin(GL_LINE_LOOP);
  150.     for i:=1 to 40 do begin
  151.       w:=(PI / 180) * (wi * i - (wi / 2));
  152.       x:=(-r / 2) + (r / 2 + cos(w) * (r + r) / 2);
  153.       y:=(r / 2) + (-r / 2 + sin(w) * (-r - r) / 2);
  154.       glVertex3f(x,-0.4,y);
  155.     end;
  156.     glEnd;
  157.     r:=r + 0.5;
  158.   end;
  159. end;
  160.  
  161.  
  162. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  163.   Shift: TShiftState);
  164. begin
  165.   Keys[Key]:=true;
  166. end;
  167.  
  168.  
  169. procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  170.   Shift: TShiftState);
  171. begin
  172.   Keys[Key]:=false;
  173. end;
  174.  
  175.  
  176. procedure TForm1.CheckKeys;
  177. begin
  178.   if Keys[VK_LEFT] then begin
  179.     Rotate:=Rotate - 0.5;
  180.     if Rotate<0 then
  181.       Rotate:=Rotate + 360;
  182.   end;
  183.   if Keys[VK_RIGHT] then begin
  184.     Rotate:=Rotate + 0.5;
  185.     if Rotate>360 then
  186.       Rotate:=Rotate - 360;
  187.   end;
  188. end;
  189.  
  190. end.
  191.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 17:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Nicht aufgeben ...
Kommt nun irgend ne andere Warnung?! oder sonstwas?

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 18:45 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
... also Meldungen kommenn gar keine. Ich bin überrascht.
Aber funktionieren tut es immer noch nicht.
Hm.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 19:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Schick mir mal deinen Source-Code oder poste einen Link hier hinein. Ich schau ihn mit dann mal an.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 19:12 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
Hab mal schnell auf nen Server hochgeladen

Hier: http://ice-x2.freehostag.info/ego_shooter.rar

Falls .zip sein soll dann schreib einfach nochmal :wink: [/url]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 19:18 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
ist dir aufgefallen, dass die proceduren keyUp und keyDown nicht den entsprechenden Ereignissen des Forms zugeordnet sind?
Nachdem ich das geändert hatte, funktioniert das rotieren schonmal.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 31, 2004 19:27 
Offline
DGL Member

Registriert: Do Dez 30, 2004 23:26
Beiträge: 15
... muss das in OnKeyDown hinein?

Oder wie ?


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 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.013s | 14 Queries | GZIP : On ]