Ich habe mir einige der hier gestellten Fragen zu diesem Thema angesehen und kann immer noch nicht herausfinden, warum mein 2D-HUD angezeigt wird, aber meine gerenderte 3D-Welt verschwindet.
EDIT: Es scheint, dass die 2D-Szene die Kontrolle über den gesamten Bildschirm übernimmt, so dass ich hin und wieder sehen kann, wie die 3D-Szene durch die 2D-Szene hindurchflackert. Also, auch wenn ich seine nur ment zu sein Rendering ein Quad thats 10 x 10 Pixel es rendert diese dann blanks out den Rest des Bildschirms.
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.5,20.0);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,x,y);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0,-0.5,-6.0);
glPushMatrix();
..Draw some 3d stuff...
glPopMatrix();
// Start 2d
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0f, 255.0f, 1.0f);
glBegin(GL_QUADS);
glVertex2f(0.0, 0.0);
glVertex2f(10.0, 0.0);
glVertex2f(10.0, 10.0);
glVertex2f(0.0, 10.0);
glEnd();
Dann tausche ich die Puffer
Hier ist die Reihenfolge meines Codes. Seine wie es macht die 3D-Raum dann macht die 2D-Raum, die wiederum den 3D-Raum aufhebt.
0 Stimmen
Was ist der Unterschied zwischen
SCREEN_WIDTH
yx
(verwendet inglViewport
)? Wenn Sie die letzten sechs Zeilen auskommentieren, aber das 2D-Setup beibehalten, verschwindet die 3D-Darstellung dann immer noch? Können Sie die Ursache auf eine Zeile oder einen Befehl eingrenzen, die bzw. der die 3-D-Darstellung beeinträchtigt?0 Stimmen
@Ben Voigt: Wenn ich die letzten 6 Zeilen (beginnend mit glbegin()) auskommentiere, erscheint das 3D-Rendering immer noch nicht. SCREEN_WIDTH und X sind das gleiche, ich habe zwei vars gemacht ohne es zu merken und habe es noch nicht aufgeräumt.
0 Stimmen
Ok, kommentieren Sie den 2-D-Setup-Code weiter aus, bis die 3-D-Welt zurückkommt. Entweder eine Zeile nach der anderen oder benutze eine binäre Suche, um zu teilen und zu erobern. Wahrscheinlich ändern Sie den OpenGL-Status, von dem der 3D-Code annahm, dass er in der Standardeinstellung belassen wurde, wie z. B. Texturierung oder ein Shader oder etwas Ähnliches.
0 Stimmen
@Ben Voigt: Wenn ich aus dem 2.
glMatrixMode(GL_PROJECTION);
die 3d-Render-Anzeigen