/// <summary> /// /// </summary> /// <param name="c"></param> /// <param name="texId"></param> /// <param name="nx"></param> /// <param name="ny"></param> /// <param name="nz"></param> private unsafe void UpdateVolTextureData(Cell[,,] c, VolTextureId texId, int nx, int ny, int nz) { HardwarePixelBuffer buffer = _volTextures[(int)texId].GetBuffer(0, 0); buffer.Lock(HardwareBuffer.LockOptions.HBL_DISCARD); PixelBox pb = buffer.CurrentLock; uint x = 0; uint y = 0; uint z = 0; unsafe { byte *pbptr = (byte *)pb.data; for (z = pb.box.front; z < pb.box.back; z++) { for (y = pb.box.top; y < pb.box.bottom; y++) { for (x = pb.box.left; x < pb.box.right; x++) { PixelConverter.PackColour(0, 0, (uint)c[x, y, z].Dens, (uint)c[x, y, z].Light, PixelFormat.PF_BYTE_RGB, &pbptr[x]); } pbptr += pb.rowPitch; } pbptr += pb.SliceSkip; } } buffer.Unlock(); }
/// <summary> /// /// </summary> /// <param name="texId"></param> /// <param name="nx"></param> /// <param name="ny"></param> /// <param name="nz"></param> private void CreateVolTexture(VolTextureId texId, int nx, int ny, int nz) { _volTextures[(int)texId] = (Texture)TextureManager.Singleton.CreateManual( "_SkyX_VolCloudsData" + (int)texId, SkyX.SkyXResourceGroup, TextureType.TEX_TYPE_1D, (uint)nx, (uint)ny, nz, Mogre.PixelFormat.PF_BYTE_RGB, (int)TextureUsage.TU_DEFAULT); _volTextures[(int)texId].Load(); using (MaterialPtr mat = MaterialManager.Singleton.GetByName("SkyX_VolClouds")) { mat.GetTechnique(0).GetPass(0).GetTextureUnitState((ushort)texId).SetTextureName("_SkyX_VolCloudsData" + (int)texId, TextureType.TEX_TYPE_1D); } }
/// <summary> /// /// </summary> /// <param name="c"></param> /// <param name="texId"></param> /// <param name="nx"></param> /// <param name="ny"></param> /// <param name="nz"></param> private unsafe void UpdateVolTextureData(Cell[,,] c, VolTextureId texId, int nx, int ny, int nz) { HardwarePixelBuffer buffer = _volTextures[(int)texId].GetBuffer(0, 0); buffer.Lock( HardwareBuffer.LockOptions.HBL_DISCARD); PixelBox pb = buffer.CurrentLock; uint x = 0; uint y = 0; uint z = 0; unsafe { byte* pbptr = (byte*)pb.data; for (z = pb.box.front; z < pb.box.back; z++) { for (y = pb.box.top; y < pb.box.bottom; y++) { for (x = pb.box.left; x < pb.box.right; x++) { PixelConverter.PackColour(0, 0, (uint)c[x,y,z].Dens, (uint)c[x,y,z].Light, PixelFormat.PF_BYTE_RGB, &pbptr[x]); } pbptr += pb.rowPitch; } pbptr += pb.SliceSkip; } } buffer.Unlock(); }
/// <summary> /// /// </summary> /// <param name="texId"></param> /// <param name="nx"></param> /// <param name="ny"></param> /// <param name="nz"></param> private void CreateVolTexture(VolTextureId texId, int nx, int ny, int nz) { _volTextures[(int)texId] = (Texture)TextureManager.Singleton.CreateManual( "_SkyX_VolCloudsData" + (int)texId, SkyX.SkyXResourceGroup, TextureType.TEX_TYPE_1D, (uint)nx, (uint)ny,nz ,Mogre.PixelFormat.PF_BYTE_RGB, (int)TextureUsage.TU_DEFAULT); _volTextures[(int)texId].Load(); using (MaterialPtr mat = MaterialManager.Singleton.GetByName("SkyX_VolClouds")) { mat.GetTechnique(0).GetPass(0).GetTextureUnitState((ushort)texId).SetTextureName("_SkyX_VolCloudsData" + (int)texId, TextureType.TEX_TYPE_1D); } }