示例#1
0
        void CreateMediaResources(FFmpegStreamDesc ffmpegStream)
        {
            Console.WriteLine($"Hardware Decoding : {ffmpegStream.IsHardwareDecoded}");
            Console.WriteLine($"FPS : {ffmpegStream.FramesPerSecond}");

            mediaFrameRect = new Vec4(0, 0, ffmpegStream.Width, ffmpegStream.Height);

            if (ffmpegStream.IsHardwareDecoded)
            {
                mediaFrameTexture = new D3DTexture2D(renderDevice,
                                                     ffmpegStream.Width,
                                                     ffmpegStream.Height,
                                                     DxgiFormat.NV12,
                                                     D3DBind.ShaderResource,
                                                     D3DUsage.Default,
                                                     D3DAccess.None,
                                                     D3DMisc.Shared);
            }
            else
            {
                mediaFrameTexture = new D3DTexture2D(renderDevice,
                                                     ffmpegStream.Width,
                                                     ffmpegStream.Height,
                                                     DxgiFormat.NV12,
                                                     D3DBind.ShaderResource,
                                                     D3DUsage.Dynamic,
                                                     D3DAccess.Write);
            }

            mediaFrameTextureYView  = new D3DShaderResourceView(renderDevice, mediaFrameTexture, DxgiFormat.R8_UNORM);
            mediaFrameTextureUVView = new D3DShaderResourceView(renderDevice, mediaFrameTexture, DxgiFormat.R8G8_UNORM);

            mediaTransform = Mat4x4.Ortho(0, mediaFrameRect.Right, mediaFrameRect.Bottom, 0);
            mediaVertices  = new MediaVertex[]
            {
                new MediaVertex(new Vec3(0, 0, 0), new Vec2(0, 0)),
                new MediaVertex(new Vec3(ffmpegStream.Width, 0, 0), new Vec2(1, 0)),
                new MediaVertex(new Vec3(0, ffmpegStream.Height, 0), new Vec2(0, 1)),

                new MediaVertex(new Vec3(ffmpegStream.Width, 0, 0), new Vec2(1, 0)),
                new MediaVertex(new Vec3(ffmpegStream.Width, ffmpegStream.Height, 0), new Vec2(1, 1)),
                new MediaVertex(new Vec3(0, ffmpegStream.Height, 0), new Vec2(0, 1)),
            };

            // update GPU resources
            var newMediaConstantBuffer = new MediaConstantBuffer(Mat4x4.Transpose(mediaTransform));

            renderDeviceContext.UpdateGPUResource(mediaConstantBuffer, newMediaConstantBuffer);
            renderDeviceContext.UpdateGPUResource(mediaVertexBuffer, mediaVertices, D3DMap.WriteDiscard);
        }
示例#2
0
文件: Button.cs 项目: sgrzeda/rose
 protected void UpdateTexture(string szImage="")
 {
     if (szImage.Length < 3 || D3DTextureManager.Instance[szImage] == null)
     {
         if (D3DTextureManager.Instance[m_szTexture] == null)
             return;
         szImage = m_szTexture;
     }
     m_szTexture = szImage;
     m_pTexture = D3DTextureManager.Instance[szImage];
     m_pTexture.SetFrames(4);
     m_rectBounds = new Rectangle(m_rectBounds.X, m_rectBounds.Y, m_pTexture.Size.Width / 4, m_pTexture.Size.Height);
 }
示例#3
0
文件: Window.cs 项目: sgrzeda/rose
        private void UpdateImage(string szImage = "")
        {
            if (m_bgLayoutType == BGLAYOUT_TYPE.Tile)
            {
                if (szImage.Length < 6)
                    szImage = m_szTilebase;
                else
                    m_szTilebase = szImage;
                string szPart1 = szImage.Substring(0, szImage.Length - 6);
                string szPart2 = szImage.Substring(szImage.Length - 4);

                for (int i = 0; i < 12; i++)
                {
                    string sztexture = szPart1 + String.Format("{0:00}", i) + szPart2;
                    if (D3DTextureManager.Instance[sztexture] == null)
                        return;
                    m_tileTextures[i] = D3DTextureManager.Instance[sztexture];
                }
            }
            else
            {
                if (szImage.Length < 3 || D3DTextureManager.Instance[szImage] == null)
                    return;
                m_pTexture = D3DTextureManager.Instance[szImage];
                if (m_rectBounds.Width < m_pTexture.Size.Width)
                    m_rectBounds.Width = m_pTexture.Size.Width;
                if (m_rectBounds.Height < m_pTexture.Size.Height)
                    m_rectBounds.Height = m_pTexture.Size.Height;
            }
        }