Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi glscene für graphikdarstellung von analytischer geometrie?? (https://www.delphipraxis.net/17987-glscene-fuer-graphikdarstellung-von-analytischer-geometrie.html)

Robertlu 12. Mär 2004 13:16


glscene für graphikdarstellung von analytischer geometrie??
 
Hallo

wie kann ich glscene für graphikdarstellung von analytischer geometrie nutzen???
mein projekt verwendet mehrere fenster, ich weis noch nichts über glscene.

gruß robert

dizzy 12. Mär 2004 14:31

Re: glscene für graphikdarstellung von analytischer geometri
 
Zitat:

ich weis noch nichts über glscene.
Dann solltest du dir das zunächst mal saugen, und damit ein wenig herumspielen! Hier und da findet man auch kleine Hilfestellungen im Netz (Onkel Google ist dein Freund ;)).

Wie du analytische Geometrie darstellen kannst!? In dem du sie zeichnen (rendern) lässt... es gibt etliche Objekte is GLScene, diverse möglichkeiten zu zeichnen etc.pp.
Die Frage ist zu allgemein um sie sinnvoll beantworten zu können.

Wenn du konkrete Fragen hast, dann können wir weiter reden :mrgreen:



gruss,
dizzy

Robertlu 12. Mär 2004 15:13

Re: glscene für graphikdarstellung von analytischer geometri
 
Hallo dizzy ich hab da mal ne konkrete frage:

Code:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL12;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
****procedure*InitGL;*
****procedure*DrawScene;
****procedure*ApplicationEvents1Idle(Sender:*TObject;*var*Done:*Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

procedure*SetDCPixelFormat(Handle:*HDC);

var
  Form1: TForm1;
  aDC:hDC;
**hRC:HGLRC;

implementation

{$R *.dfm}




procedure*SetDCPixelFormat(Handle:*HDC);
**var
****nPixelFormat:*GLUint;
**const
****pfd:*PIXELFORMATDESCRIPTOR*=*( 
********nSize:*sizeof(*PIXELFORMATDESCRIPTOR*);
********nVersion:*1;
********dwFlags:*PFD_DRAW_TO_WINDOW
********or*PFD_SUPPORT_OPENGL
********or*PFD_DOUBLEBUFFER;
********iPixelType:*PFD_TYPE_RGBA;
********cColorBits:*16;
********cRedBits:*0;
********cRedShift:*0;
********cGreenBits:*0;
********cBlueBits:*0;
********cBlueShift:*0;
********cAlphaBits:*0;
********cAlphaShift:*0;
********cAccumBits:*0;
********cAccumRedBits:*0;
********cAccumGreenBits:*0;
********cAccumBlueBits:*0;
********cAccumAlphaBits:*0;
********cDepthBits:*16;
********cStencilBits:*0;
********cAuxBuffers:*0;
********iLayerType:*PFD_MAIN_PLANE;
********bReserved:*0;
********dwLayerMask:*0;
********dwVisibleMask:*0;
********dwDamageMask:*0 
****);
**begin
****nPixelFormat:=ChoosePixelFormat(aDC,*@pfd);
****SetPixelFormat(aDC,nPixelFormat,@pfd);
**end;


procedure*TForm1.InitGL;
begin
**glClearColor(0,0,0,0);
**glClearDepth(1);
**glDepthFunc(GL_LESS);
**glShadeModel(GL_SMOOTH);
**glEnable(GL_DEPTH_TEST);
**glViewport(0,0,Width,Height);
**glMatrixMode(GL_PROJECTION);
**glLoadIdentity;
**gluPerspective(45,Width/Height,1,100);
**glMatrixMode(GL_MODELVIEW);
end;


procedure*TForm1.DrawScene;
begin
**glClear(GL_COLOR_BUFFER_BIT*or*GL_DEPTH_BUFFER_BIT);
**glLoadIdentity;
**//Hier wird später die Scene gezeichnet.
**SwapBuffers(aDC);
end;


procedure*TForm1.ApplicationEvents1Idle(Sender:*TObject;
**var*Done:*Boolean);
begin
**DrawScene;
**Done:=False;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  InitOpenGL;
**aDC:=GetDC(Handle);
**SetDCPixelFormat(aDC);
**hRC:=wglCreateContext(aDC);
**wglMakeCurrent(aDC,hRC);
end;

end.

Da kommt bei mir folgender Fehler

END erwartet, aber ungültiges Zeichen #160 gefunden.

und dann noch ein paar compilerfehler

den Code habe ich mir auf der Basis eines Tutorials aufgebaut

Danke schon mal

ROB

dizzy 12. Mär 2004 16:22

Re: glscene für graphikdarstellung von analytischer geometri
 
Hm, #160 ist ein "á", und #0160 ein Leerzeichen. Letzteres ist aber Unicode, uns dürfte in nem Delphi-Quelltext nicht zu finden sein. ein "á" finde ich aber auch nicht... Eventuell sind nach dem Kopieren ein paar Fehler reingekommen!?

Das "á" ist aber unter Umständen auch in den Sourcen von GLScene zu finden, da dies von einem Franzosen stammt, und dort manche (wenige) Kommentare in Französisch sind. Evtl. fehlt ja irgendwo das // o.ä., so dass das Zeichen scheinbar zur Quelle gehört. Allerdings hatte ich dieses Problem an keiner Stelle.

Einen Großteil der Compilermeldungen kann man bestimmt auf den ersten Fehler zurückführen. Du musst aber auch genau darauf achten, dass du alle nötigen Units einbindest. U.U. weiss man erst was "benötigt" ist, wenn man den Source nach einem benötigten Datentyp von Hand durchsucht. TVector3f und andere sind z.B. in "VectorTypes.pas". Klingt einleuchtend, steht aber nirgend wo geschrieben...

Auch musst du darauf achten alle Unterverzeichnisse von "($GLScene)\source\* " in den Bibliothekspfad zu übernehmen. es reicht scheinbar nicht nur "($GLScene)\source" zu nehmen.


Hoffe ich konnte etwas helfen.

gruss,
dizzy

\\edit: hmmm... die Tutorials kenne ich :mrgreen:. Mein erster Code sah sehr ähnlich aus.

AHHH HALT!!!
Du initialisiesrt ja von Hand!? Was dein Quellcode darstellt sind die ersten Schritte zu Pure-OpenGL! Bei GLScene ist das alles nicht nötig! Da reicht es eben ein TGLScene-Objekt auf's Formular zu klatschen, und *bubbs* alles initialisiert!

dizzy 12. Mär 2004 16:28

Re: glscene für graphikdarstellung von analytischer geometri
 
Dazu sei noch gesagt:

GLScene <> OpenGL !!!

GLScene kapselt OpenGL-Klamotten, um es dir einfacher zu machen. Wenn du pures OpenGL machen möchtest, dann mach mit dem weiter, was du schon hast. Aber sei gewappnet: Du musst jedes einzelne Face Punkt für Punkt ganz von Hand setzten! OpenGL kennt keine Primitives wie Würfel oder Kugeln. Das müsstest du dir komplett selber bauen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz