- procedure TUnEngine.RenderScene;
- var i:integer;
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(45.0,PDisplay.Width/PDisplay.Height,PCamera.View_Near,PCamera.View_Far);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity;
- //Position
- glTranslatef(PCamera.Position_X,PCamera.Position_Y,PCamera.Position_Z);
- glRotatef(PCamera.Rotation_X,1,0,0);
- glRotatef(PCamera.Rotation_Y,0,1,0);
- glRotatef(PCamera.Rotation_Z,0,0,1);
- glPushMatrix();
- //Rendern der Objekte...
- //Quads
- if PListQuads.Count>0 then
- begin
- for i := 0 to PListQuads.Count - 1 do begin
- if TUnQuad(PListQuads[i]^).Textured=True then glEnable(GL_TEXTURE_2D) else glDisable(GL_TEXTURE_2D);
- glTranslatef(TUnQuad(PListQuads[i]^).Position.X,TUnQuad(PListQuads[i]^).Position.Y,TUnQuad(PListQuads[i]^).Position.Z);
- glRotatef(TUnQuad(PListQuads[i]^).Rotation.X,1,0,0);
- glRotatef(TUnQuad(PListQuads[i]^).Rotation.Y,0,1,0);
- glRotatef(TUnQuad(PListQuads[i]^).Rotation.Z,0,0,1);
- if TUnQuad(PListQuads[i]^).FrontFace=True then
- begin
- glBegin(GL_QUADS);
- glColor3f(1,1,1);
- if TUnQuad(PListQuads[i]^).Textured=True then glBindTexture(GL_TEXTURE_2D,TUnQuad(PListQuads[i]^).Texture);
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(0,0)
- else glColor3f(TUnQuad(PListQuads[i]^).Color.Red,TUnQuad(PListQuads[i]^).Color.Green,TUnQuad(PListQuads[i]^).Color.Blue);
- glVertex3f(0,TUnQuad(PListQuads[i]^).Height,0); //Links|Oben
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(0,1);
- glVertex3f(0,0,0); //Links|Unten
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(1,1);
- GlVertex3f(TUnQuad(PListQuads[i]^).Width,0,0); //Rechts|Unten
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(1,0);
- glVertex3f(TUnQuad(PListQuads[i]^).Width,TUnQuad(PListQuads[i]^).Height,0); //Rechts|Oben
- glEnd;
- end;
- if TUnQuad(PListQuads[i]^).FrontFace=False then
- begin
- glBegin(GL_QUADS);
- glColor3f(1,1,1);
- if TUnQuad(PListQuads[i]^).Textured=True then glBindTexture(GL_TEXTURE_2D,TUnQuad(PListQuads[i]^).Texture);
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(0,0)
- else glColor3f(TUnQuad(PListQuads[i]^).Color.Red,TUnQuad(PListQuads[i]^).Color.Green,TUnQuad(PListQuads[i]^).Color.Blue);
- glVertex3f(0,TUnQuad(PListQuads[i]^).Height,0); //Links|Oben
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(1,0);
- glVertex3f(TUnQuad(PListQuads[i]^).Width,TUnQuad(PListQuads[i]^).Height,0); //Rechts|Oben
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(1,1);
- GlVertex3f(TUnQuad(PListQuads[i]^).Width,0,0); //Rechts|Unten
- if TUnQuad(PListQuads[i]^).Textured=True then glTexCoord2f(0,1);
- glVertex3f(0,0,0); //Links|Unten
- GLEnd;
- end;
- //Bewegen zum "Nullpunk" in der Kamerasicht
- glPopMatrix();
- end;
- end;
- SwapBuffers(PDC);
- end;