public override void Draw() { viewport.Begin(); var cam = new LookAtCamera(); Matrix4x4 rot = Matrix4x4.CreateRotationX(viewport.CameraRotation.Y) * Matrix4x4.CreateRotationY(viewport.CameraRotation.X); var dir = Vector3.Transform(-Vector3.UnitZ, rot); var to = Vector3.Zero; cam.Update(viewport.RenderWidth, viewport.RenderHeight, viewport.CameraOffset, to, rot); shader.SetViewProjection(cam); var w = Matrix4x4.Identity; var n = Matrix4x4.Identity; shader.SetWorld(ref w, ref n); shader.Shader.SetVector3(cameraPositionIndex, cam.Position); tex.BindTo(0); shader.UseProgram(); for (int i = 0; i < 6; i++) { sphere.GetDrawParameters((CubeMapFace)i, out int start, out int count, out _); sphere.VertexBuffer.Draw(PrimitiveTypes.TriangleList, 0, start, count); } viewport.End(); }