private void DrawBody(Side side) { Gl.glPushMatrix(); Point3d[] txtCrds = DrawingService.GetTextureCoordinates(); if (side == Side.Back) { Gl.glTranslated(5, 0, 0); for (int i = 0; i <= txtCrds.Length - 1; i++) { txtCrds[i].X = -txtCrds[i].X; } } Point3d[] points = new Point3d[4] { new Point3d(0, 0.5, 0), new Point3d(-5, 0.5, 0), new Point3d(-5, -2, 0), new Point3d(0, -2, 0) }; DrawingService.DrawPolygon(points, txtCrds, Side.Front, new Point3d(0, 0, 1)); Gl.glPopMatrix(); }
private static void DrawPanel(Side side) { Gl.glPushMatrix(); Point3d[] t = DrawingService.GetTextureCoordinates(); if (side == Side.Back) { Gl.glRotated(180, 0, 1, 0); for (int i = 0; i <= t.Length - 1; i++) { t[i].Y = -t[i].Y; } } Point3d[] p = new Point3d[4] { new Point3d(-0.5, 0, 1), new Point3d(-0.5, 1, 1), new Point3d(-0.5, 1, -1), new Point3d(-0.5, 0, -1) }; Point3d n = new Point3d(-1, 0, 0); DrawingService.DrawPolygon(p, t, side, n); Gl.glPopMatrix(); }
private void DrawRoof() { Point3d[] points = new Point3d[4] { new Point3d(-4, 0.5, 2), new Point3d(0, 0.5, 2), new Point3d(0, 0.5, -2), new Point3d(-4, 0.5, -2), }; Point3d[] txtCrds = DrawingService.GetTextureCoordinates(); DrawingService.DrawPolygon(points, txtCrds, Side.Front, new Point3d(0, 1, 0)); }
private void DrawRoof(Side side) { Point3d[] points = new Point3d[3] { new Point3d(-5, 0.5, 2), new Point3d(-4, 0.5, 2), new Point3d(-5, 2, 2) }; Point3d[] txtCrds = DrawingService.GetTextureCoordinates(); Point3d normal = new Point3d(0, 0, 1); if (side == Side.Back) { normal = new Point3d(0, 0, -1); } DrawingService.DrawPolygon(points, txtCrds, Side.Front, normal); Gl.glPushMatrix(); points = new Point3d[3] { new Point3d(5, 0.5, 2), new Point3d(5, 2, 2), new Point3d(4, 0.5, 2) }; Gl.glRotated(180, 0, 1, 0); DrawingService.DrawPolygon(points, txtCrds, Side.Front, new Point3d(0, 0, 1)); Gl.glPopMatrix(); points = new Point3d[4] { new Point3d(-5, 0.5, 2), new Point3d(-5, 2, 2), new Point3d(-5, 2, -2), new Point3d(-5, 0.5, -2) }; DrawingService.DrawPolygon(points, txtCrds, Side.Front, new Point3d(-1, 0, 0)); points = new Point3d[4] { new Point3d(-4, 0.5, 2), new Point3d(-4, 0.5, -2), new Point3d(-5, 2, -2), new Point3d(-5, 2, 2) }; if (side == Side.Back) { normal = new Point3d(0, -1, 0); } else { normal = new Point3d(1, 1, 0); } DrawingService.DrawPolygon(points, txtCrds, Side.Front, normal); }
private void DrawFloor() { Gl.glPushMatrix(); Gl.glRotated(180, 0, 1, 0); Point3d[] points = new Point3d[4] { new Point3d(5, -2, 2), new Point3d(0, -2, 2), new Point3d(0, -2, -2), new Point3d(5, -2, -2), }; Point3d[] txtCrds = DrawingService.GetTextureCoordinates(); DrawingService.DrawPolygon(points, txtCrds, Side.Front, new Point3d(0, -1, 0)); Gl.glPopMatrix(); }
private static void DrawBody(Side side) { Gl.glPushMatrix(); if (side == Side.Back) { Gl.glRotated(180, 0, 1, 0); } Point3d[] p = new Point3d[4] { new Point3d(-0.5, 0, 1), new Point3d(0.5, 0, 1), new Point3d(0.5, 1, 1), new Point3d(-0.5, 1, 1) }; Point3d[] t = DrawingService.GetTextureCoordinates(); Point3d n = new Point3d(0, 0, 1); DrawingService.DrawPolygon(p, t, Side.Front, n); Gl.glPopMatrix(); }
public void Draw() { for (int i = 0; i <= blocks.GetLength(0) - 1; i++) { for (int j = 0; j <= blocks.GetLength(1) - 1; j++) { Point3d[] p = blocks[i, j].GetValues(); DrawingService.PickTexture(string.Format("sand0{0}.jpg", textures[i, j])); Point3d[] t = DrawingService.GetTextureCoordinates(); DrawingService.DrawPolygon(p, t, Side.Front, new Point3d(0, 1, 0)); } } DrawingService.PickTexture(TextureNames.BackGround); Gl.glBegin(Gl.GL_POLYGON); { Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(2, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(2, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(0, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); } Gl.glEnd(); Gl.glBegin(Gl.GL_POLYGON); { Gl.glTexCoord2d(0, 4); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glTexCoord2d(2, 4); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glTexCoord2d(2, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); } Gl.glEnd(); Gl.glBegin(Gl.GL_POLYGON); { Gl.glTexCoord2d(0, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glTexCoord2d(2, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glTexCoord2d(2, 0); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); } Gl.glEnd(); Gl.glBegin(Gl.GL_POLYGON); { Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(0, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(2, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(2, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, zerolevel, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glNormal3b(0, 0, 1); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); } Gl.glEnd(); Gl.glBegin(Gl.GL_POLYGON); { Gl.glTexCoord2d(0, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glNormal3b(0, -1, 0); Gl.glTexCoord2d(2, 4); Gl.glVertex3d(DrawingService.CameraPosition.X + DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glNormal3b(0, -1, 0); Gl.glTexCoord2d(2, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z + DrawingService.Distance); Gl.glNormal3b(0, -1, 0); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(DrawingService.CameraPosition.X - DrawingService.Distance, DrawingService.CameraPosition.Y + DrawingService.Distance, DrawingService.CameraPosition.Z - DrawingService.Distance); Gl.glNormal3b(0, -1, 0); } Gl.glEnd(); Gl.glFlush(); }