private unsafe Image CreateImage(Rendering.Texture type) { Device device = _renderer.Params.Device; AllocationCallbacks *allocator = (AllocationCallbacks *)_renderer.Params.AllocationCallbacks.ToPointer(); Vk vk = _renderer.Vk; ImageCreateInfo imageCreateInfo = new() { SType = StructureType.ImageCreateInfo, ImageType = ImageType.ImageType2D, Extent = new Extent3D() { Width = Size.X, Height = Size.Y, Depth = 1 }, MipLevels = _mipLevelCount, ArrayLayers = 1, Format = _format, Tiling = ImageTiling.Optimal, InitialLayout = ImageLayout.Undefined, Usage = ImageUsageFlags.ImageUsageTransferDstBit | ImageUsageFlags.ImageUsageTransferSrcBit | ImageUsageFlags.ImageUsageSampledBit, SharingMode = SharingMode.Exclusive, Samples = SampleCountFlags.SampleCount1Bit, QueueFamilyIndexCount = 0, PQueueFamilyIndices = null }; _renderer.AssertVulkan(vk.CreateImage(device, imageCreateInfo, allocator, out Image image)); return(image); }
protected override void Load(ResourceDesc resourceDescription) { Texture2DResourceDesc desc = (Texture2DResourceDesc)resourceDescription; var texture2D = CommonDX.TextureLoader.CreateTexture2DFromBitmap(desc.Device, CommonDX.TextureLoader.LoadBitmap(new SharpDX.WIC.ImagingFactory2(), desc.FileName)); Width = texture2D.Description.Width; Height = texture2D.Description.Height; D3D11.ShaderResourceView srvt = null; if (desc.CreateSRVT) { srvt = new D3D11.ShaderResourceView(desc.Device, texture2D); } Texture = new Rendering.Texture(texture2D, srvt); }
public void Load(Vector2D <uint> size, ImageFlags flags, Rendering.Texture type, ReadOnlySpan <byte> data) { _format = (type == Rendering.Texture.Rgba) ? Format.R8G8B8A8Unorm : Format.R8Unorm; Id = ++_idCounter; Size = size; _type = type; _mipLevelCount = CalculateMipLevelCount(); _image = CreateImage(type); TextureType = type; _flags = flags; _memory = BindImageMemory(); if ((data == null) || (data.Length == 0)) { data = FakeData(); } Upload(data); _imageView = CreateImageView(); _sampler = CreateSampler(); }
public void Load(Vector2D <uint> size, ImageFlags flags, Rendering.Texture type, ReadOnlySpan <byte> data) { Id = ++_idCounter; _textureID = _gl.GenTexture(); Size = size; TextureType = type; _flags = flags; Bind(); _renderer.CheckError("tex paint tex"); SetPixelStore(); Load(data); MinFilter(); MagFilter(); RepeatX(); RepeatY(); ResetPixelStore(); Mipmaps(); _renderer.CheckError("create tex"); Unbind(); }