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]); } }
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(); }
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); } }
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); } }