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