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