/// <summary> /// Crear Vertices segun la cara pedida /// </summary> private void cargarVertices(SkyFaces face, GraphicsStream data, int color) { switch (face) { case SkyFaces.Up: cargarVerticesUp(data, color); break; case SkyFaces.Down: cargarVerticesDown(data, color); break; case SkyFaces.Front: cargarVerticesFront(data, color); break; case SkyFaces.Back: cargarVerticesBack(data, color); break; case SkyFaces.Right: cargarVerticesRight(data, color); break; case SkyFaces.Left: cargarVerticesLeft(data, color); break; } }
/// <summary> /// Tomar los valores configurados y crear el SkyBox /// </summary> public void updateValues() { Device d3dDevice = GuiController.Instance.D3dDevice; //Crear cada cara for (int i = 0; i < faces.Length; i++) { //Crear mesh de D3D Mesh m = new Mesh(2, 4, MeshFlags.Managed, TgcSceneLoader.DiffuseMapVertexElements, d3dDevice); SkyFaces skyFace = (SkyFaces)i; // Cargo los vértices using (VertexBuffer vb = m.VertexBuffer) { GraphicsStream data = vb.Lock(0, 0, LockFlags.None); int colorRgb = this.color.ToArgb(); cargarVertices(skyFace, data, colorRgb); vb.Unlock(); } // Cargo los índices using (IndexBuffer ib = m.IndexBuffer) { short[] ibArray = new short[6]; cargarIndices(ibArray); ib.SetData(ibArray, 0, LockFlags.None); } //Crear TgcMesh string faceName = Enum.GetName(typeof(SkyFaces), skyFace); TgcMesh faceMesh = new TgcMesh(m, "SkyBox-" + faceName, TgcMesh.MeshRenderType.DIFFUSE_MAP); faceMesh.Materials = new Material[] { TgcD3dDevice.DEFAULT_MATERIAL }; faceMesh.createBoundingBox(); faceMesh.Enabled = true; //textura TgcTexture texture = TgcTexture.createTexture(d3dDevice, faceTextures[i]); faceMesh.DiffuseMaps = new TgcTexture[] { texture }; faceMesh.AutoTransformEnable = false; faces[i] = faceMesh; matrices[i] = faceMesh.Transform; } }
/// <summary> /// Configurar la textura de una cara del SkyBox /// </summary> /// <param name="face">Cara del SkyBox</param> /// <param name="texturePath">Path de la textura</param> public void setFaceTexture(SkyFaces face, string texturePath) { faceTextures[(int)face] = texturePath; }