Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        /// <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();
        }
Ejemplo n.º 4
0
        /// <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);
            }
        }