/// <summary> /// 创建一个立方体 /// </summary> public void CreateCube() { // 顶点位置 Vector3D[] points = { new Vector3D(-1, 1, -1), new Vector3D(-1, -1, -1), new Vector3D(1, -1, -1), new Vector3D(1, 1, -1), new Vector3D(-1, 1, 1), new Vector3D(-1, -1, 1), new Vector3D(1, -1, 1), new Vector3D(1, 1, 1) }; // 顶点索引 int[] indices = { // 前面 0, 1, 2, 0, 2, 3, // 后面 7, 6, 5, 7, 5, 4, // 左面 0, 4, 5, 0, 5, 1, // 右面 2, 6, 7, 2, 7, 3, // 上面 3, 7, 4, 3, 4, 0, // 下面 1, 5, 6, 1, 6, 2 }; // UV坐标 Vector2[] texcoords = { // 前面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0), // 后面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0), // 左面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0), // 右面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0), // 上面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0), // 下面 new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 0), new Vector2(1, 1), new Vector2(1, 0) }; //法线 Vector3D[] norlmas = { // 前面 new Vector3D(0, 0, -1), new Vector3D(0, 0, -1), new Vector3D(0, 0, -1), new Vector3D(0, 0, -1), new Vector3D(0, 0, -1), new Vector3D(0, 0, -1), // 后面 new Vector3D(0, 0, 1), new Vector3D(0, 0, 1), new Vector3D(0, 0, 1), new Vector3D(0, 0, 1), new Vector3D(0, 0, 1), new Vector3D(0, 0, 1), // 左面 new Vector3D(-1, 0, 0), new Vector3D(-1, 0, 0), new Vector3D(-1, 0, 0), new Vector3D(-1, 0, 0), new Vector3D(-1, 0, 0), new Vector3D(-1, 0, 0), // 右面 new Vector3D(1, 0, 0), new Vector3D(1, 0, 0), new Vector3D(1, 0, 0), new Vector3D(1, 0, 0), new Vector3D(1, 0, 0), new Vector3D(1, 0, 0), // 上面 new Vector3D(0, 1, 0), new Vector3D(0, 1, 0), new Vector3D(0, 1, 0), new Vector3D(0, 1, 0), new Vector3D(0, 1, 0), new Vector3D(0, 1, 0), // 下面 new Vector3D(0, -1, 0), new Vector3D(0, -1, 0), new Vector3D(0, -1, 0), new Vector3D(0, -1, 0), new Vector3D(0, -1, 0), new Vector3D(0, -1, 0), }; List <Vertex> vertices = new List <Vertex>(); for (int i = 0; i < 36; i++) { Vertex vertex = new Vertex(); Vector3D point = points[indices[i]]; vertex.Position = point; vertex.Position.w = 1; vertex.TexCoord = texcoords[i]; vertex.Normal = norlmas[i]; vertex.Color = new SampleCommon.Color((point.x + 1) / 2, (point.y + 1) / 2, (point.z + 1) / 2); vertices.Add(vertex); } List <Triangle> triangles = new List <Triangle>(); for (int i = 0; i < 36; i += 3) { Triangle triangle = new Triangle(vertices[i], vertices[i + 1], vertices[i + 2]); triangles.Add(triangle); } mCube = new Mesh(triangles); mRenderer.AddRenderObject(mCube); }
public override void Added() { _renderObject = new ImGuiRenderObject(); Renderer.AddRenderObject(_renderObject, RenderPass.UI); }