Esempio n. 1
0
        static ITextureView loadPng(IRenderDevice device, byte[] payload)
        {
            TextureLoadInfo loadInfo = new TextureLoadInfo(false);
            var             png      = new MemoryStream(payload, false);
            var             texture  = device.LoadTexture(png, eImageFileFormat.PNG, ref loadInfo, "Mouse cursor");

            return(texture.GetDefaultView(TextureViewType.ShaderResource));
        }
Esempio n. 2
0
        private async void Load(string file)
        {
            mLoadInfo = await Task <TextureLoadInfo> .Factory.StartNew(() => TextureLoader.LoadFirstLayer(file));

            if (mLoadInfo.Format != Format.R8G8B8A8_UNorm)
            {
                DecompressData();
            }

            if (OnBeforeLoad != null)
            {
                OnBeforeLoad(this, mLoadInfo.Layers[0]);
            }

            InterfaceManager.Instance.Dispatcher.Invoke(OnSyncLoad);
        }
Esempio n. 3
0
        void loadTexture(IRenderDevice device, iStorageFolder assets)
        {
            // Decode the image from embedded resource of this DLL.
            assets.openRead("net-core-logo.png", out var png);
            if (null == png)
            {
                throw new ApplicationException("The texture wasn't found");
            }
            TextureLoadInfo loadInfo = new TextureLoadInfo(false)
            {
                IsSRGB = true
            };
            var texture = device.LoadTexture(png, eImageFileFormat.PNG, ref loadInfo, null);

            // Get shader resource view from the texture
            textureView = texture.GetDefaultView(TextureViewType.ShaderResource);
            // Update the ShaderResourceBinding setting the shader resource view of the newly loaded texture
            resourceBinding.GetVariableByName(ShaderType.Pixel, "g_Texture").Set(textureView);
        }
Esempio n. 4
0
        private unsafe void OnRenderText()
        {
            var size   = gGraphics.MeasureString(mText, mFont);
            var width  = (int)(size.Width + 0.5f);
            var height = (int)(size.Height + 0.5f);

            mWidth  = size.Width;
            mHeight = size.Height;

            if (width == 0 || height == 0)
            {
                mShouldDraw = false;
                return;
            }

            byte[] buffer;
            using (var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb))
            {
                using (var graphics = System.Drawing.Graphics.FromImage(bitmap))
                {
                    graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
                    graphics.DrawString(mText, mFont, mBrush, 0, 0);
                }

                var rect = new System.Drawing.Rectangle(0, 0, width, height);
                var bits = bitmap.LockBits(rect, ImageLockMode.ReadOnly, bitmap.PixelFormat);

                width  = bits.Width;
                height = bits.Height;

                var destPitch = width * 4;
                var scanline  = (byte *)bits.Scan0;
                buffer = new byte[destPitch * height];

                for (var y = 0; y < height; ++y)
                {
                    var scanline32 = (uint *)scanline;
                    for (var x = 0; x < width; ++x)
                    {
                        var color = *scanline32++;
                        var a     = (color >> 24) & 0xff;
                        var r     = (color >> 16) & 0xff;
                        var g     = (color >> 8) & 0xff;
                        var b     = (color >> 0) & 0xff;

                        var offset = destPitch * y + x * 4;
                        buffer[offset + 0] = (byte)r;
                        buffer[offset + 1] = (byte)g;
                        buffer[offset + 2] = (byte)b;
                        buffer[offset + 3] = (byte)a;
                    }

                    scanline += bits.Stride;
                }

                bitmap.UnlockBits(bits);
            }

            var texLoadInfo = new TextureLoadInfo
            {
                Format          = Format.R8G8B8A8_UNorm,
                Usage           = ResourceUsage.Immutable,
                Width           = width,
                Height          = height,
                GenerateMipMaps = true
            };

            texLoadInfo.Layers.Add(buffer);
            texLoadInfo.RowPitchs.Add(width * 4);
            mTexture.LoadFromLoadInfo(texLoadInfo);
            mShouldDraw = true;
        }