Autor Beitrag
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Di 20.01.04 05:43 
Hallo,

also ich habe volgendes Problem! Ich möchte Texte und sowas wie ein HUD über meine 3D-Scene legen! Und komme da nicht sorecht weiter!

Also ich brauche wenn es möglich ist zwei Proceduren eine "go3D" um in 3D zu zeichnen und eine "go2D" um 2D also meinen Text und die HUD zu zeichnen!

Mein aktueller Code schaut so 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:
Procedure go3D;
 Begin

  // Setzt den View Port von OpenGL neu
    glViewPort(0, 0, WindowSizeX, WindowSizeY);
  // Projectionsmatrix Aktivieren
    glMatrixMode(gl_Projection);
  // und zurücksetzen
    glLoadIdentity();
  // Perspective setzen
    gluPerspective(SichtWinkel, WindowSizeX / WindowSizeY, NearClipping, FarClipping);
  // zur ModelView Matrix
    glMatrixMode(gl_ModelView);
  // und auch zurück setzten
    glLoadIdentity();
  // Tiefen Test aktivieren
    glEnable(gl_Depth_Test);

 End;

Procedure Frustum;
 Var
  XMin, XMax,
  YMin, YMax: glDouble;
 Begin
//  Exit;
  glViewPort(0, 0, WindowSizeX, WindowSizeY);

  glMatrixMode(gl_Projection);
  glLoadIdentity();

  YMax:=NearClipping * Tan(SichtWinkel * PI / 360.0);
  YMin:=-YMax;

  XMin:=YMin * WindowAspect;
  XMax:=YMax * WindowAspect;

  glFrustum(XMin, XMax, YMin, YMax, NearClipping, FarClipping);

  glCullFace(gl_Front);

  glMatrixMode(gl_ModelView);
  glLoadIdentity();
 End;

Procedure go2D;
 Begin
//  Exit;
  glViewPort(0, 0, WindowSizeX, WIndowSizeY);

  glMatrixMode(gl_Projection);
  glLoadIdentity();

  glOrtho(0, WIndowSizeX, WindowSizeY, 0, -1, 1);
  glMatrixMode(gl_ModelView);

  glLoadIdentity();

  glDisable(gl_Depth_Test);
  glDisable(gl_Cull_Face);
  glDisable(gl_Blend);
  glEnable(gl_Alpha_Test);
  glColor4F(1, 1, 1, 1);
 End;


Das mit der Frustum Procedure habe ich irgendwo im Internet gefunden! Aber das hat leider nicht Funktioniert! Könnt ihr mir bei meinen Problem helfen! Ich danke euch schon mal im Vorraus!

CU
Neo

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Zuletzt bearbeitet von NeoInDerMATRIX am Di 20.01.04 21:08, insgesamt 1-mal bearbeitet
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Di 20.01.04 08:27 
ausblenden Delphi-Quelltext
1:
2:
3:
Procedure go2D; 
Begin 
  Exit;


Vieleicht solltest Du mal das Exit da weg nehmen, da der Aufruf von go2D sonst sofort beendet ist.

Ansonsten sieht der Code zum wechseln nach 2D gut aus.

Gruß
KidPaddle
NeoInDerMATRIX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Di 20.01.04 21:07 
Hallo,

@KidPaddle:
Das EXIT ist nur da weil ich die Procedure aus Zwecken der Fehlersuche deaktivieren muste. Habe ich aber leider Vergessen beim Posten zu korigieren.

Also wenn ich die 2D oder 3D Code hernehme dann sehe ich nur noch das 2D zeug!

CU
Neo
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: Di 20.01.04 21:23 
Nun ja, mache doch einen sehr einfachen test. Setze die Projektion auf 2D. Ist was zu sehen? Wenn ja, ist der Code gut. Nehme nur 3D, ist dort bei einem korrekten Plane etwas zu sehen? Wenn nein, dann liegt da der Fehler. Was mich hier ein wenig spektisch macht. Sind wirklich alle Variablen in den Funktionen mit korrekten Werten befüllt? Ist eine vielleicht unitalisiert?

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Di 20.01.04 22:01 
In meiner OpenGl - Anwendung wechsle ich zwischen den beide Modis wie folgt:

ausblenden 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:
procedure TOGLMain.SwitchTo2D;
begin
  glViewport(0, 0, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(0, ClientWidth, ClientHeight, 0, -1, 1);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
end;

procedure TOGLMain.SwitchTo3D;
begin
  glViewport(0, 0, ClientWidth, ClientHeight);

  //Projektionsmatrix resetten
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();

  //Perspektivische Darstellung
  gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
end;


Der Code entspricht dem, den Du hast. Der Fehler muß wo anderes liegen.

Gruß
KidPaddle
NeoInDerMATRIX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Do 22.01.04 01:29 
Hallo,

Also bis jetzt hatte ich keine Probleme mit dem Code, erst seit dem ich den Code zum umschalten hinzugefügt habe.
Also mein Rendercode sieht so aus

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Procedure Render;
 Begin
  go3D;
  // Frustrum;
  Draw3D; // Zeichnet alle 3D Objecte, zur zeit ein 3eck mit Texture
  go2D;
  DrawConsole; // Soll erst mal nur Text ausgeben Position tec.
  DrawHUD; // soll mal ne HUD zeichnen, zur zeit nur nen Viereck.
 End;


Mit "go3D" und "go2D" sehe ich nur noch mein Vieweck aus der "DrawHUD". Wenn ich keines von beiden hernehme, sehe ich nur mein 3eck aus "Draw3D". Alle anderen Kombinationen zeigen nur das Viereck.

@Phobeus:
Ja es sind sehr viele Variablen. Habe meinen Code probiert in Klassen zu packen.
Also ich habe jetzt ne Klasse ala tWindow die mein Fenster per Win-API verwaltet. Und das ging bis jetzt auch, aber wenn ich mit dem Debuger über den Code gehe, sind alle VAR's mit den richtigen Werten belegt!
Denke ich jeden fals! nach meinen Referenz Code's mal zu urteilen.

Also CU
Neo