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

Aktuelle Zeit: Do Mai 16, 2024 08:08

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



Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 15:38 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Beispiel:
Code:
  1.  
  2.  
  3. var
  4.  
  5.   mgDrawCB: procedure;
  6.  
  7.  
  8.  
  9. begin
  10.  
  11.   mgDrawCB := @mgDraw;
  12.  
  13.   mgDrawCB;
  14.  
  15. end.
  16.  
  17.  

Du machst eine Variable welche der Prozedur oder auch Funktion entspricht. Diese muss genau so deklariert sein wie die Funktion selber. Für nähere Details schau einfach in der Delphi-Hilfe oder im Handbuch zu "Prozeduale Variablen" nach. Dann weist Du dieser Variable die Adresse Deiner eigentlichen Funktion zu und verwendest zum Aufrufen nur noch die Variable. Delphi blickt das dann automatisch und ruft die Prozedur auf, welche in der Variable hinterlegt ist. Das ist das was gemacht wird, wenn Du deinem OnClick-Ereignis in Deiner Form eine Prozedur zuweist. DIE vernwedet die genauso wie die VCL um den Benutzer die Möglichkeit zu geben, auf diverse Ereignisse zu reagieren.

Aber an Deiner Stelle würd ich das Zeugs aus der DPR raus und in eine andere Unit verfrachten!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 13, 2002 18:26
Beiträge: 42
Wohnort: Stuttgart
ihr initialisiert opengl anders als bei den tutorials von son of satan... der hat ohne setpixelformat gearbeitet und mit ActivateRenderingContext und DeactivateRenderingContext...

is das zweitere langsamer, weil man es öfter aufruft?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 18:07 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Sind das nicht 2 Funktionen aus Opengl12.pas, die von sich aus bei bedarf das pixel format setzen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 18:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Sind das nicht 2 Funktionen aus Opengl12.pas, die von sich aus bei bedarf das pixel format setzen?

Jupp...die Funktion CreateRenderingContext () macht nichts anderes als das Pixelformat zu setzen, aber warum selber machen, wenns dazu ne praktische Unit gibt :D

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 13, 2002 18:26
Beiträge: 42
Wohnort: Stuttgart
was hat es mit dem ActivateRenderingContext und DeactivateRenderingContext auf sich?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 20:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
-> wglMakeCurrent, mehr nicht...die beiden Funktionen machen den GL-Kontext aktiv bzw. deaktivieren ihn...ich weis, das ist eigentlich nicht in jedem Frame nötig, aber zur Problemvermeidung und Fehlerbehebung einfach besser.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 13, 2002 18:26
Beiträge: 42
Wohnort: Stuttgart
wieso zum teufel schaff ichs nicht ein normales QUADRAT zu zeichnen nach deiner methode, son ?
wenn ich nach der DGL methode vorgeh klappts ohne probleme... was mach ich falsch? :( ich hab mir dein source angeschaut und finde den fehler nicht, da ich eigntl alles gleich hab..

und wenn ich versuche picking und selection zu machen nach GENAU demselben schema, nur nicht über deine methode sondern mit manuellem SetPixelformat etc... klappt das nicht und bekomme nur GL_INVALID_irgendwas (so wie du es auf deiner seite beschrieben hast...) ich hab 100pro nichts vergessen und alles is gleich! :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 07, 2002 21:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann poste mal den Sourcecode, sonst kann man dir wohl schlecht helfen...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: ok....
BeitragVerfasst: Di Okt 08, 2002 17:01 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 13, 2002 18:26
Beiträge: 42
Wohnort: Stuttgart
sncMain.pas

Code:
  1.  
  2.  
  3. unit sncMain;
  4.  
  5.  
  6.  
  7. interface
  8.  
  9.  
  10.  
  11. uses
  12.  
  13.   // Automatisch von Delphi hinzugefuegt
  14.  
  15.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  16.  
  17.   Dialogs,
  18.  
  19.   // Eigene
  20.  
  21.   OpenGL12, OGLInit, City;
  22.  
  23.  
  24.  
  25. type
  26.  
  27.   TFormMain = class(TForm)
  28.  
  29.     procedure FormCreate(Sender: TObject);
  30.  
  31.     procedure FormDestroy(Sender: TObject);
  32.  
  33.     procedure FormShow(Sender: TObject);
  34.  
  35.     procedure FormAppIdle(Sender: TObject; var Done: Boolean);
  36.  
  37.     procedure FormResize(Sender: TObject);
  38.  
  39.     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  40.  
  41.   public
  42.  
  43.     RenderingContext: HGLRC;
  44.  
  45.     DeviceContext: HDC;
  46.  
  47.   end;
  48.  
  49.  
  50.  
  51. type
  52.  
  53.   TCityField = record
  54.  
  55.     sx: Single;         // Wo beginnt das Feld (X)? s steht für Start
  56.  
  57.     sy: Single;         // Wo beginnt das Feld (Y)? s steht für Start
  58.  
  59.   end;
  60.  
  61.  
  62.  
  63.   TCity = record
  64.  
  65.     Breite: Integer;
  66.  
  67.     Hoehe: Integer;
  68.  
  69.     Feld: Array of Array of TCityField;   // 2 Dimensionales Array
  70.  
  71.     CamX, CamY, CamZ: Single;             // Kameraposition
  72.  
  73.   end;
  74.  
  75.  
  76.  
  77. const
  78.  
  79.   // OpenGL
  80.  
  81.   NEARCLIPPING = 0.1;   // Wie nah wird die Szene angezeigt (z-achse)
  82.  
  83.   FARCLIPPING = 50;     // Wie weit wird die Szene angezeigt (z-achse)
  84.  
  85.  
  86.  
  87.   // City
  88.  
  89.   CITYFIELDWIDTH = 1.0;     // Breite eines Stadtfeldes
  90.  
  91.   CITYFIELDHEIGHT = 1.0;    // Hoehe eines Stadtfeldes
  92.  
  93.   CITYFIELDSPACE = 0.0;     // Platz zwischen den Stadtfeldern
  94.  
  95.  
  96.  
  97. var
  98.  
  99.   // MainForm
  100.  
  101.   FormMain: TFormMain;
  102.  
  103.  
  104.  
  105.   // OpenGL
  106.  
  107.   Fullscreen: Boolean=false;
  108.  
  109.   iPixelDepth: Shortint=16;
  110.  
  111.   iWidth: Integer=800;
  112.  
  113.   iHeight: Integer=600;
  114.  
  115.  
  116.  
  117.   // Performance
  118.  
  119.   CurrentFPS: Single=0;       // Aktuelle FPS
  120.  
  121.   FPS: Integer;               // FPS Zwischenspeicher
  122.  
  123.   StartTickCount: Integer;    // Zur FPS Berechnung
  124.  
  125.  
  126.  
  127.   // Dateien
  128.  
  129.   App_Path: ShortString='';   // Verzeichnis wo sich unsere .exe befindet
  130.  
  131.  
  132.  
  133.   // Maus
  134.  
  135.   MouseX, MouseY: Integer;
  136.  
  137.  
  138.  
  139.   // Stadtkarte
  140.  
  141.   Stadtkarte: TCity;
  142.  
  143.  
  144.  
  145. implementation
  146.  
  147.  
  148.  
  149. {$R *.dfm}
  150.  
  151.  
  152.  
  153. procedure CalculateFPS;
  154.  
  155. begin
  156.  
  157.   Inc(FPS);
  158.  
  159.   if GetTickCount-StartTickCount>=1000 then
  160.  
  161.   begin
  162.  
  163.   CurrentFPS:=FPS/(GetTickCount-StartTickCount)*1000;
  164.  
  165.     FPS:=0;
  166.  
  167.     StartTickCount:=GetTickCount;
  168.  
  169.   end;
  170.  
  171. end;
  172.  
  173.  
  174.  
  175. procedure RenderMainScene;
  176.  
  177. begin
  178.  
  179.   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  180.  
  181.   glMatrixMode(GL_MODELVIEW);
  182.  
  183.  
  184.  
  185.   glLoadIdentity;
  186.  
  187.  
  188.  
  189.   RenderCity
  190.  
  191.  
  192.  
  193.   glBegin(GL_QUADS);
  194.  
  195.     glColor3f(1,1,1);
  196.  
  197.     glVertex3f(0,0,-5);
  198.  
  199.     glVertex3f(1,1,-5);
  200.  
  201.     glVertex3f(1,0,-5);
  202.  
  203.   glEnd;
  204.  
  205.  
  206.  
  207.   SwapBuffers(FormMain.DeviceContext);
  208.  
  209. end;
  210.  
  211.  
  212.  
  213.  
  214.  
  215. // ********************************************************
  216.  
  217. procedure TFormMain.FormCreate(Sender: TObject);
  218.  
  219. var
  220.  
  221.   Dummy: HPalette;
  222.  
  223. begin
  224.  
  225.   DeviceContext:=GetDC(Handle);
  226.  
  227.   RenderingContext:=CreateRenderingContext(DeviceContext,[opDoubleBuffered],iPixelDepth,0,0,0,0,Dummy);
  228.  
  229.  
  230.  
  231.   if DeviceContext=0 then begin ShowMessage('FormCreate in sncMain: "GetDC(...)" failed!'); halt; end;
  232.  
  233.   if RenderingContext=0 then begin ShowMessage('FormCreate in sncMain: "CreateRenderingContext(...)" failed!'); halt; end;
  234.  
  235.   if not LoadOpenGL then begin ShowMessage('FormCreate in sncMain: "LoadOpenGL" failed!'); halt; end;
  236.  
  237.   if Fullscreen and not ChangeToFullscreenMode(iWidth,iHeight,iPixelDepth) then begin Showmessage('FormCreate in sncMain: "ChangeToFullscreenMode(...)" failed!'); Fullscreen:=false; end;
  238.  
  239.  
  240.  
  241.     App_Path:=ExtractFilePath(Application.ExeName);
  242.  
  243.   Application.OnIdle:=FormAppIdle;
  244.  
  245.  
  246.  
  247.   ActivateRenderingContext(FormMain.DeviceContext, FormMain.RenderingContext);
  248.  
  249. end;
  250.  
  251.  
  252.  
  253. procedure TFormMain.FormShow(Sender: TObject);
  254.  
  255. begin
  256.  
  257.   InitializeOpenGL(DeviceContext, RenderingContext);
  258.  
  259.  
  260.  
  261.   SetCitySize(100,100);
  262.  
  263.   BuildCity;
  264.  
  265. end;
  266.  
  267.  
  268.  
  269. procedure TFormMain.FormResize(Sender: TObject);
  270.  
  271. begin
  272.  
  273.   if HandleAllocated then
  274.  
  275.   begin
  276.  
  277.    glViewport(0, 0, ClientWidth, ClientHeight);
  278.  
  279.    glMatrixMode(GL_PROJECTION);
  280.  
  281.     glLoadIdentity();
  282.  
  283.    gluPerspective(45.0,ClientWidth/ClientHeight,NEARCLIPPING,FARCLIPPING);
  284.  
  285.     glMatrixMode(GL_MODELVIEW);
  286.  
  287.    glLoadIdentity;
  288.  
  289.   end;
  290.  
  291. end;
  292.  
  293.  
  294.  
  295. procedure TFormMain.FormAppIdle(Sender: TObject; var Done: Boolean);
  296.  
  297. begin
  298.  
  299.   RenderMainScene;
  300.  
  301.  
  302.  
  303.   Done:=false;
  304.  
  305.   CalculateFPS;
  306.  
  307.  
  308.  
  309.   FormMain.Caption:=inttostr(round(CurrentFPS));
  310.  
  311. end;
  312.  
  313.  
  314.  
  315. procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  316.  
  317. begin
  318.  
  319.   MouseX:=X;
  320.  
  321.   MouseY:=Y;
  322.  
  323. end;
  324.  
  325.  
  326.  
  327. procedure TFormMain.FormDestroy(Sender: TObject);
  328.  
  329. begin
  330.  
  331.   DeviceContext:=0;
  332.  
  333.   RenderingContext:=0;
  334.  
  335.  
  336.  
  337.   if Fullscreen then BackToOldResolution;
  338.  
  339.  
  340.  
  341.   SetCitySize(0,0);
  342.  
  343.   DeactivateRenderingContext;
  344.  
  345. end;
  346.  
  347.  


OGLinit.pas
Code:
  1.  
  2.  
  3. unit OGLInit;
  4.  
  5.  
  6.  
  7. interface
  8.  
  9.  
  10.  
  11. uses OpenGL12, Windows, Forms;
  12.  
  13.  
  14.  
  15.   // Vollbild
  16.  
  17.   function ChangeToFullscreenMode(iWidth, iHeight: Integer; ibpp: Shortint): Boolean;
  18.  
  19.   procedure BackToOldResolution;
  20.  
  21.  
  22.  
  23.   // OpenGL
  24.  
  25.   procedure InitializeOpenGL(DC: HDC; RC: HGLRC);
  26.  
  27.  
  28.  
  29. implementation
  30.  
  31.  
  32.  
  33. uses sncMain;
  34.  
  35.  
  36.  
  37. function ChangeToFullscreenMode(iWidth, iHeight: Integer; ibpp: Shortint): Boolean;
  38.  
  39. var
  40.  
  41.     dmScreensettings: DevMode;
  42.  
  43. begin
  44.  
  45.   result:=true;
  46.  
  47.  
  48.  
  49.   ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
  50.  
  51.     with dmScreenSettings do begin
  52.  
  53.     dmSize      :=SizeOf(dmScreenSettings);
  54.  
  55.   dmPelsWidth :=iWidth;
  56.  
  57.   dmPelsHeight:=iHeight;
  58.  
  59.   dmBitsPerPel:=ibpp;
  60.  
  61.     dmFields    :=DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
  62.  
  63.   end;
  64.  
  65.  
  66.  
  67.     if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then result:=false
  68.  
  69.   else
  70.  
  71.   begin
  72.  
  73.     FormMain.BorderStyle:=bsNone;
  74.  
  75.   end;
  76.  
  77.  
  78.  
  79. end;
  80.  
  81.  
  82.  
  83. procedure BackToOldResolution;
  84.  
  85. begin
  86.  
  87.   ChangeDisplaySettings(devmode(nil^),0);
  88.  
  89. end;
  90.  
  91.  
  92.  
  93. procedure InitializeOpenGL(DC: HDC; RC: HGLRC);
  94.  
  95. begin
  96.  
  97.   glClearColor(0.5, 0.0, 0.0, 0.0);
  98.  
  99.   glEnable(GL_DEPTH_TEST);
  100.  
  101.   glEnable(GL_CULL_FACE);
  102.  
  103.   glShadeModel(GL_SMOOTH);
  104.  
  105.   glColor3f(1,1,1);
  106.  
  107. end;
  108.  
  109.  
  110.  
  111. end.
  112.  
  113.  


City.pas
Code:
  1.  
  2.  
  3. unit City;
  4.  
  5.  
  6.  
  7. interface
  8.  
  9.  
  10.  
  11. uses Dialogs, OpenGL12;
  12.  
  13.  
  14.  
  15.   // Funktionen und Prozeduren
  16.  
  17.   procedure SetCitySize(iWidth, iHeight: Cardinal);
  18.  
  19.   procedure BuildCity;
  20.  
  21.   procedure RenderCity;
  22.  
  23.  
  24.  
  25. implementation
  26.  
  27.  
  28.  
  29. uses sncMain;
  30.  
  31.  
  32.  
  33. procedure SetCitySize(iWidth, iHeight: Cardinal);
  34.  
  35. begin
  36.  
  37.   try
  38.  
  39.     SetLength(Stadtkarte.Feld, iWidth, iHeight);
  40.  
  41.   except
  42.  
  43.     ShowMessage('SetCitySize in City: "SetLenght(...)" failed!');
  44.  
  45.     halt;
  46.  
  47.   end;
  48.  
  49. end;
  50.  
  51.  
  52.  
  53. procedure BuildCity;
  54.  
  55. var
  56.  
  57.     x,y: integer;
  58.  
  59. begin
  60.  
  61.     for x:=0 to Stadtkarte.Breite-1 do
  62.  
  63.   for y:=0 to StadtKarte.Hoehe-1 do
  64.  
  65.   begin
  66.  
  67.    StadtKarte.Feld[x][y].sx:=(x*CITYFIELDWIDTH);
  68.  
  69.    StadtKarte.Feld[x][y].sy:=-(y*CITYFIELDHEIGHT)-CITYFIELDSPACE;
  70.  
  71.   end;
  72.  
  73.   Stadtkarte.CamX:=0;
  74.  
  75.   Stadtkarte.CamY:=0;
  76.  
  77.   Stadtkarte.CamZ:=-5;
  78.  
  79. end;
  80.  
  81.  
  82.  
  83.  
  84.  
  85. procedure RenderCity;
  86.  
  87. var
  88.  
  89.     x,y: integer;
  90.  
  91. begin
  92.  
  93.     glLoadIdentity;
  94.  
  95.     glTranslatef(Stadtkarte.CamX,Stadtkarte.CamY,Stadtkarte.CamZ);
  96.  
  97.     glRotatef(-45,1,0,0);
  98.  
  99.  
  100.  
  101.     for x:=0 to Stadtkarte.Breite-1 do
  102.  
  103.   for y:=0 to Stadtkarte.Hoehe-1 do
  104.  
  105.   begin
  106.  
  107.  
  108.  
  109.   glBegin(GL_QUADS);
  110.  
  111.    glColor3f(1.0,1.0,1.0);
  112.  
  113.    glVertex3f((x*CITYFIELDWIDTH),-(y*CITYFIELDHEIGHT)-CITYFIELDHEIGHT,0);
  114.  
  115.    glColor3f(0.3,0.3,0.3);
  116.  
  117.    glVertex3f((x*CITYFIELDWIDTH)+CITYFIELDWIDTH-CITYFIELDSPACE,-(y*CITYFIELDHEIGHT)-CITYFIELDHEIGHT,0);
  118.  
  119.    glVertex3f((x*CITYFIELDWIDTH)+CITYFIELDWIDTH-CITYFIELDSPACE,-(y*CITYFIELDHEIGHT)-CITYFIELDSPACE,0);
  120.  
  121.    glVertex3f((x*CITYFIELDWIDTH),-(y*CITYFIELDHEIGHT)-CITYFIELDSPACE,0);
  122.  
  123.   glEnd();
  124.  
  125.  
  126.  
  127.     end;
  128.  
  129. end;
  130.  
  131.  
  132.  
  133. end.
  134.  
  135.  


das is alles... und ich hab nur nen dunkel roten hintergrund... mehr krieg ich net aufn schirm... weder fehlermeldung sonst noch was. wenn ich das ganze über setpixelformat mache hat es geklappt...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 08, 2002 17:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
ich hab auch ein Problem. Ich hab jetzt alles auf eine andere Unit ausgelagert, und jetzt scheint das programm still zu stehen (er macht nur den Hintergrund schwarz und zeichnet nix von der Scene)? Der Sourcecode ist der gleiche, bloß mit den Verbesserungen von Schod und der Auslagerung von gmDraw und gmProcessKeys in Draw.pas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 08, 2002 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Bin jetzt etwas zu faul, ein neues Projekt zu erstellen um den Source zu testen, aber ändere mal folgendes :

Code:
  1.  
  2.  
  3. procedure RenderMainScene;
  4.  
  5. begin
  6.  
  7. glClearColor(0,0,0,0);
  8.  
  9.  
  10.  
  11.   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  12.  
  13.   glMatrixMode(GL_MODELVIEW);
  14.  
  15.  
  16.  
  17.   glLoadIdentity;
  18.  
  19.  
  20.  
  21.   RenderCity
  22.  
  23.  
  24.  
  25.   glBegin(GL_QUADS);
  26.  
  27.     glColor3f(1,1,1);
  28.  
  29.     glVertex3f(0,0,-5);
  30.  
  31.     glVertex3f(1,1,-5);
  32.  
  33.     glVertex3f(1,0,-5);
  34.  
  35.   glEnd;
  36.  
  37.  
  38.  
  39.   SwapBuffers(FormMain.DeviceContext);
  40.  
  41. end;
  42.  
  43.  
  44.  
  45.  
  46.  
  47. // ********************************************************
  48.  
  49. procedure TFormMain.FormCreate(Sender: TObject);
  50.  
  51. var
  52.  
  53.   Dummy: HPalette;
  54.  
  55. begin
  56.  
  57.   DeviceContext:=GetDC(Handle);
  58.  
  59.   RenderingContext:=CreateRenderingContext(DeviceContext,[opDoubleBuffered],iPixelDepth,0,0,0,0,Dummy);
  60.  
  61.  
  62.  
  63.   if DeviceContext=0 then begin ShowMessage('FormCreate in sncMain: "GetDC(...)" failed!'); halt; end;
  64.  
  65.   if RenderingContext=0 then begin ShowMessage('FormCreate in sncMain: "CreateRenderingContext(...)" failed!'); halt; end;
  66.  
  67.   if not LoadOpenGL then begin ShowMessage('FormCreate in sncMain: "LoadOpenGL" failed!'); halt; end;
  68.  
  69.   if Fullscreen and not ChangeToFullscreenMode(iWidth,iHeight,iPixelDepth) then begin Showmessage('FormCreate in sncMain: "ChangeToFullscreenMode(...)" failed!'); Fullscreen:=false; end;
  70.  
  71.  
  72.  
  73.    App_Path:=ExtractFilePath(Application.ExeName);
  74.  
  75.   Application.OnIdle:=FormAppIdle;
  76.  
  77.  
  78.  
  79. // &nbsp;ActivateRenderingContext(FormMain.DeviceContext, &nbsp;<-- lass die Zeile mal weg!
  80.  
  81. FormMain.RenderingContext);
  82.  
  83. end;
  84.  
  85.  


Code:
  1.  
  2.  
  3. procedure RenderMainScene;
  4.  
  5. begin
  6.  
  7. ActivateRenderingContext(FormMain.DeviceContext, FormMain.RenderingContext);
  8.  
  9.  
  10.  
  11.  &nbsp;glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  12.  
  13.  &nbsp;glMatrixMode(GL_MODELVIEW);
  14.  
  15.  
  16.  
  17.  &nbsp;glLoadIdentity;
  18.  
  19.  
  20.  
  21.  &nbsp;RenderCity
  22.  
  23.  
  24.  
  25.  &nbsp;glBegin(GL_QUADS);
  26.  
  27.  &nbsp; &nbsp;glColor3f(1,1,1);
  28.  
  29.  &nbsp; &nbsp;glVertex3f(0,0,-5);
  30.  
  31.  &nbsp; &nbsp;glVertex3f(1,1,-5);
  32.  
  33.  &nbsp; &nbsp;glVertex3f(1,0,-5);
  34.  
  35.  &nbsp;glEnd;
  36.  
  37.  
  38.  
  39.  &nbsp;SwapBuffers(FormMain.DeviceContext);
  40.  
  41.  
  42.  
  43. DeActivateRenderingContext;
  44.  
  45. end;
  46.  
  47.  


Wenns dann immer noch net geht, schick mir mal den Source mit allen benötigten Files, und ich werd mich drum kümmern :twisted:

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 08, 2002 19:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
@Bluetoby: Änder mal Deine gmDraw Funktion so ab, dass Du z.B. Per zufallsgenerator immer 'ne Andere Farbe zu Löschen der Szene hast. Und setz in Delphi einen Break-Point. Somit kannst Du überprüfen, was genau schief läuft.!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 09, 2002 05:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
hmm... kleiner Denkfehler von mir... ich geh nur 8 zurück und meine Sphere ist 10 groß !
Aber aus Draw geht
Code:
  1.  &nbsp;GIGAmetrie.WindowCaption := 'Doof';

nicht... Ich will aber meine WindowCaption verändern, die eine PAnsiCharVariable in GIGAmetrie.pas ist...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 09, 2002 07:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Naja, da Du kein VCL-Fenster verwendest, birngt die das zuweisen der Caption an eine Variable nix. Wenn Du die Caption in der Variable hast, dann musst Du sie auch noch an Dein Fenster zuweisen. Probier mal: SetWindowText(FensterHandle, PChar(GIGAmetrie.WindowCaption)); Steht übrigens alles in der Platform-SDK-Hilfe. Sollte man sich als Coder auf jeden Fall besorgen!!!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 09, 2002 12:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Oh nein! Danke für den Tipp... irgendwie erschien es mir logisch, dass wenn ich es im CreateWindow der WindowMain-Schleife aufrufe, dass ich dann nur die Var ändern müsste, aber ich wollte die ja nur um die Anwendungscaption am Start zu verändern... glaube mache viele Schusselfehler...


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


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.049s | 17 Queries | GZIP : On ]