Autor Beitrag
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.06.06 19:40 
Hallo,
Ich würde gerne einen Raum in 3D darstellen - undzwar ohne Bilder. Die Rück- und Vorderwand ist natürlich ganz einfach, zb mit einem Panel darstellbar. Aber wie kriege ich die abgeschräkten Seitenwände hin?
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Sa 24.06.06 19:51 
guck dir vlt. ma [url=www.delphigl.com]OpenGL[/url] oder DirectX an
harryp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 52
Erhaltene Danke: 9

Win 8.1
Delphi 7, XE8
BeitragVerfasst: Sa 24.06.06 20:20 
ansonsten vielleicht etwas besser beschreiben was genau du jetzt grad so für hilfe erwartest/möchtest - welche komponenten sollst du benutzen oder wie soll das zimmer eingeräumt werden oder wie oder was?

btw: würde auch auf opengl verweisen ;)
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.06.06 13:03 
Ja, da hast du natürlich Recht! Ich hätte besser beschreiben sollen. Mein Problem war aber, dass ich wissen wollte, welche Komponenten ich benutzen soll. Hatte keinen Plan, wie ich da ran gehen soll. Deshalb bin ich dankbar, dass ich trotz mieser Beschreibung so ne hilfreihe Antwort bekommen habe! Danke :) Werde mich dann mal in OpenGL einarbeiten - sieht echt gut aus.
Naja, jetzt noch ne kurze Frage dazu. Ist mir jetzt echtn bissle peinlich, das zu fragen, aber... Also ich hab jetzt OpenGL mal installiert. Nur hab ich ehrlich gesagt keine Ahnung, wie ich das jetzt verwenden soll. Hab schon Probiert, das mal in Delphi als Komponente zu installieren, aber wirklich geklappt hat das nicht. Gibts da vielleicht ein Tut dazu (hab kein gefunden)?
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: So 25.06.06 13:05 

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: So 25.06.06 18:07 
Wie user profile iconMarco D. und ich schon gesagt haben, guck dich mal bei www.delphigl.com mal ein bisschen um, da gibts ne Menge Tutorials, auch welche für Einsteiger ;)

so.. nochma für Faule: DGL Tutorials
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.06.06 15:19 
Ja, hatte sie schon gefunden :) Grieg nur das mit dem Header nicht hin :( Entweder ich benutze die Datei, die schon zur Verfügung steht, dann hab ich aber kein TForm dabei, oder ich kopier das ganze inne neue Datei, dann kennt aber Delphi die ganzen Audrücke nicht :cry:
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Mo 26.06.06 19:25 
Wenn Du es dann noch bei uns auf die Files schaffst wirst Du haufenweise Templates zu den möglichen und unmöglichen Situtationen finden, die als Grundlage durchaus ausreichen sollten.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 26.06.06 22:09 
@Phobeus: Haste mal einen Link zu ner unmöglichen Situation, die tät mich mal besonders interessieren ... ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 21.07.06 23:08 
Hey, ich bin hier grad echt am Verzweifeln!! :'( Den ganzen Tag hab ich jetzt versucht das mit dem header zu schaffen - aber nein, es will einfach nicht. Ich schreibe hier jetzt eine genaue Beschreibung hin, wie ich das versucht habe und hoffe, dass mit jetzt eeendlich jm sagen kann, was ich denn die ganze Zeit falsch mache!
Also ich bin auf delphigl.com gegangen, habe bei Files - Bibliotheken den DGL OpenGL Header (dglOpenGL.pas) heruntergeladen. Dann bin ich in das erste Turtorial auf wiki.delphigl.com/ und habe wie beschrieben den header in das Verzeichnis /lib des Delphi Hauptverzeichnisses gelegt. Und dann hab ich ausprobiert das Template nachzubauen. Mein Quelltext sieht jetzt folgendermaßen aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure IdleHandler(Sender: TObject; var Done: Boolean);
    procedure FormResize(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private    { Private-Deklarationen }
    StartTime, TimeCount, FrameCount  : Cardinal; //FrameCounter
    Frames, DrawTime                  : Cardinal; //& Timebased Movement
    procedure SetupGL;
    procedure Init;
    procedure Render;
    procedure ErrorHandler;
  public    { Public-Deklarationen }
    DC                                : HDC;  //Handle auf Zeichenfläche
    RC                                : HGLRC;//Rendering Context
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DC:= GetDC(Handle);
  if not InitOpenGL then Application.Terminate;
  RC:= CreateRenderingContext( DC,
                               [opDoubleBuffered],
                               32,
                               24,
                               0,0,0,
                               0);
  ActivateRenderingContext(DC, RC);
  SetupGL;
  Init;
end;

procedure TForm1.SetupGL;
begin
  glClearColor(0.30.40.70.0); //Hintergrundfarbe
  glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
end;

procedure TForm1.FormResize(Sender: TObject);
var tmpBool : Boolean;
begin
  glViewport(00, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);    

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  IdleHandler(Sender, tmpBool);
  NearClipping = 1;
  FarClipping  = 1000;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeactivateRenderingContext;
  DestroyRenderingContext(RC);
  ReleaseDC(Handle, DC);
end;

procedure TForm1.Render;
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
 
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
 
  glTranslatef(00, -5);
 
  glBegin(GL_QUADS);
    glColor3f(100); glVertex3f(000);
    glColor3f(010); glVertex3f(100);
    glColor3f(001); glVertex3f(110);
    glColor3f(110); glVertex3f(010);
  glEnd;
 
  SwapBuffers(DC);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   inc(FrameCount);
   Render;
   If FrameCount = 20 then
      begin
           ErrorHandler;
           FrameCount := 0;
      end;
end;

procedure TForm1.ErrorHandler;
begin
  Form1.Caption := gluErrorString(glGetError);
end;
end.

Im Form ist nur ein Timer. Und jetzt kommen Fehlermeldungen wie [Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'InitOpenGL'!!
Wie kann das sein :?
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 21.07.06 23:26 
Hallo,

Ich bin jetzt grad noch durch andre Foren gestöbert und habe dort etwas gefunden was mir weitergeholfen hat. Ich muss zugeben wirklich verstanden habe ich mein Problem nicht. Ich bin Anfänger und habe nur Grundlagen drauf. Leider war das Buch, mitdem ich Delphi lernen wollte echt mies. Dann hab ich erstmal ein knappes 3/4 Jahr PHP programmiert - mit mehr Erfolg. Naja, jetzt will ich richtig in Delphi einsteigen! Werd mir wohl nochmal ein neues Delphi-Buch anschaffen müssen.

Auf jedenfall DANKE für eure Mühe! Ihr habts zwar nicht geschafft das Richtige in meinen Kopf zu quetschen, aber wenigstens versucht :)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 21.07.06 23:49 
In deinem obigen Source musst Du auch die Unit dglOpenGL.pas einbinden; sonst weiß er ja nicht, woher Du InitOpenGL nimmst ... Ferner solltest Du mal die Vollständigkeit deiner Implementation überprüfen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jonathanschmid
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 21.07.06 23:59 
Ja, war grad dabei mein Problem auch zu verstehen! *stolz* ;) Hätte in uses noch das dglOpenGL reinschreiben müssen.
Hier noch das Thread der mir geholfen hat (falls mal jm das gleiche Problem haben sollte):
www.delphigl.com/for...viewtopic.php?t=5619