| Autor |
Beitrag |
NeoInDerMATRIX
      
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
|
Verfasst: 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
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
glViewPort(0, 0, WindowSizeX, WindowSizeY); glMatrixMode(gl_Projection); glLoadIdentity(); gluPerspective(SichtWinkel, WindowSizeX / WindowSizeY, NearClipping, FarClipping); glMatrixMode(gl_ModelView); glLoadIdentity(); glEnable(gl_Depth_Test);
End;
Procedure Frustum; Var XMin, XMax, YMin, YMax: glDouble; Begin 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 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 Tino: Code- durch Delphi-Tags ersetzt.
Zuletzt bearbeitet von NeoInDerMATRIX am Di 20.01.04 21:08, insgesamt 1-mal bearbeitet
|
|
KidPaddle
      
Beiträge: 351
WinXP,Linux
D7 Prof, XE7
|
Verfasst: Di 20.01.04 08:27
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 
      
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
|
Verfasst: 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
      
Beiträge: 1280
Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
|
Verfasst: 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
      
Beiträge: 351
WinXP,Linux
D7 Prof, XE7
|
Verfasst: Di 20.01.04 22:01
In meiner OpenGl - Anwendung wechsle ich zwischen den beide Modis wie folgt:
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);
glMatrixMode(GL_PROJECTION); glLoadIdentity();
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 
      
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
|
Verfasst: 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
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
|
|
|