Beispiel #1
0
        private static void ConvertCTexImage(
            NativeEnvironment e,
            ITexImage src,
            CTexImage *dst)
        {
            var mipmaps = src.Mipmaps;

            dst->mipmap_count   = mipmaps.Count;
            dst->mipmaps_length = mipmaps.Count;

            if (mipmaps.Count == 0)
            {
                dst->mipmaps = null;
                return;
            }

            var cmipmaps = e.AllocateStructArray <CTexMipmap>(mipmaps.Count);

            dst->mipmaps = cmipmaps;

            for (var i = 0; i < mipmaps.Count; i++)
            {
                ConvertCTexMipmap(e, mipmaps[i], &cmipmaps[i]);
            }
        }
Beispiel #2
0
        public override void Update()
        {
            base.Update();

            if (!Initialized)
            {
                Upload();
                Dirty();
            }

            for (int i = 0; i < dirtyRegions.Length; i++)
            {
                ITexImage texImage = ImageArray[i] as ITexImage;

                if (texImage != null)
                {
                    foreach (Region2D region in dirtyRegions[i])
                    {
                        texImage.Upload(Target, region);
                    }
                }

                dirtyRegions[i].Clear();
            }
        }
        public override void Update()
        {
            base.Update();

            ITexImage texImage = Image as ITexImage;

            if (texImage != null)
            {
                foreach (Region2D region in dirtyRegions)
                {
                    texImage.Upload(Target, region);
                }
            }

            dirtyRegions.Clear();
        }
Beispiel #4
0
        private void Upload()
        {
            ITexImage texImage = Image as ITexImage;

            if (texImage != null)
            {
                texImage.Upload(Target, Image.Bounds);
            }
            else
            {
//				GL.TexImage3D(Target, 0, PixelInternalFormat.Rgb,
//								Image.Size.Width, Image.Size.Height, ((ImageArray)Image).Depth,
//								0, OpenTK.Graphics.PixelFormat.Bgr,
//								PixelType.UnsignedByte, IntPtr.Zero);
                GL.TexImage3D(Target, 0, PixelInternalFormat.R32f,
                              Image.Size.Width, Image.Size.Height, ((ImageArray)Image).Depth,
                              0, OpenTK.Graphics.PixelFormat.Red,
                              PixelType.Float, IntPtr.Zero);
            }
        }
Beispiel #5
0
        public void WriteTo(BinaryWriter writer, TexImageContainerVersion containerVersion, ITexImage image)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            var mipmapWriter = PickMipmapWriter(containerVersion);

            writer.Write(image.Mipmaps.Count);

            foreach (var mipmap in image.Mipmaps)
            {
                mipmapWriter(writer, mipmap);
            }
        }