首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏逍遥剑客的游戏开发

    关于RenderTarget的注意事项

    设置一个RenderTarget会导致viewport变成跟RenderTarget一样大 2. 反锯齿类型必须跟DepthStencilBuffer一样 3. RenderTarget的类型必须跟DepthStencilBuffer的类型兼容, 可以用IDirect3D9::CheckDepthStencilMatch进行检测 4. DepthStencilBuffer的大小必须>=RenderTarget的大小 5. IDirect3DDevice9::SetRenderTarget的第0个不能为NULL 6. Usage为D3DUSAGE_RENDERTARGET的Texture不能进行反锯齿, 而且Pool必须为D3DPOOL_DEFAULT. D3DX提供了一个ID3DXRenderToSurface, 简化了RenderTarget的使用.

    1.1K100发布于 2018-05-23
  • 来自专栏全栈程序员必看

    Unreal Engine 4 RenderTarget制作Live Camera效果

    Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译。

    43320编辑于 2022-07-07
  • 来自专栏林德熙的博客

    WPF 使用 Direct2D1 画图 绘制基本图形

    (); _renderTarget.DrawLine(new D2D.Point2F(10,10),new D2D.Point2F(100,10), _renderTarget.CreateSolidColorBrush 的工厂需要和创建 RenderTarget 一样,如果使用不一样的工厂就会出现下面异常。 1, 1)); _renderTarget = renderTarget; _d2DFactory = d2DFactory; (); _renderTarget.DrawLine(new D2D.Point2F(10,10),new D2D.Point2F(100,10), _renderTarget.CreateSolidColorBrush _renderTarget.CreateSolidColorBrush(new D2D.ColorF(1, 0, 0, 1)), 5, strokeStyle); _renderTarget.EndDraw

    1.7K10发布于 2018-09-19
  • 来自专栏林德熙的博客

    WPF 使用 Direct2D1 画图入门

    = renderTarget; }; } private D2D.RenderTarget _renderTarget; 写线段 上面说了主要就是拿 RenderTarget ,因为拿到 RenderTarget 就和拿到 DrawContext 一样,自己尝试点一下 RenderTarget 就可以看到很多画图的方法,在里面画图的性能很高。 那么尝试对RenderTarget写入线段 因为需要知道在什么时候才进行渲染,所以先添加下面代码。 if (_renderTarget == null) { return; } _renderTarget.BeginDraw 1, 1)); _renderTarget = renderTarget; }; } private D2D.RenderTarget

    1.1K10发布于 2018-09-19
  • 来自专栏林德熙的博客

    win2d CanvasRenderTarget vs CanvasBitmap 为何 Rendertarget 不需要 LoadAsync

    所有的 RenderTarget 都是位图,但不是所有的位图都是 RenderTarget,有些像素(如压缩的像素)只能在 source 使用而不能在 GPU 硬件画出来。 为何 Rendertarget 不需要 LoadAsync 原因 Rendertarget 直接就在 GPU 画,在开始画的时候不需要从文件加载图片数据。

    64410发布于 2018-09-18
  • 来自专栏林德熙的博客

    WPF 使用封装的 SharpDx 控件

    SsgnnnaTkmlo : SharpDxImage { /// <inheritdoc /> protected override void OnRender(RenderTarget renderTarget) { //随便画一个矩形。 renderTarget.Clear(null); var brush = new SharpDX.Direct2D1.SolidColorBrush(renderTarget, (d2DFactory, surface, renderTargetProperties); SetRenderTarget(renderTarget); renderTarget); private SharpDX.Direct3D9.Texture _renderTarget; private SharpDX.Direct2D1

    1.1K10编辑于 2022-08-04
  • 来自专栏林德熙的博客

    WPF 使用封装的 SharpDx 控件

    SsgnnnaTkmlo : SharpDxImage { /// <inheritdoc /> protected override void OnRender(RenderTarget renderTarget) { //随便画一个矩形。 renderTarget.Clear(null); var brush = new SharpDX.Direct2D1.SolidColorBrush(renderTarget, (d2DFactory, surface, renderTargetProperties); SetRenderTarget(renderTarget); renderTarget); private SharpDX.Direct3D9.Texture _renderTarget; private SharpDX.Direct2D1

    1.9K20发布于 2018-09-18
  • 来自专栏林德熙的博客

    WPF 使用 Direct2D1 画图 绘制基本图形

    (); _renderTarget.DrawLine(new D2D.Point2F(10,10),new D2D.Point2F(100,10), _renderTarget.CreateSolidColorBrush 的工厂需要和创建 RenderTarget 一样,如果使用不一样的工厂就会出现下面异常。 1, 1)); _renderTarget = renderTarget; _d2DFactory = d2DFactory; (); _renderTarget.DrawLine(new D2D.Point2F(10,10),new D2D.Point2F(100,10), _renderTarget.CreateSolidColorBrush _renderTarget.CreateSolidColorBrush(new D2D.ColorF(1, 0, 0, 1)), 5, strokeStyle); _renderTarget.EndDraw

    98530编辑于 2022-08-04
  • 来自专栏林德熙的博客

    dotnet C# 使用 Vortice 创建 Direct2D1 的 ID2D1SolidColorBrush 纯色画刷

    如何进行离屏渲染请看 dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染 在获取到 ID2D1RenderTarget 之后,可以通过 ID2D1RenderTarget 的 ; var height = 1000; var radiusX = 5; var radiusY = 5; renderTarget.DrawEllipse d2D1RenderTarget = d2DFactory.CreateWicBitmapRenderTarget(wicBitmap, renderTargetProperties ); using var renderTarget = d2D1RenderTarget; var stopwatch = Stopwatch.StartNew(); // 开始绘制逻辑 renderTarget.BeginDraw(); // 随意创建颜色 var color = new Color4

    66820编辑于 2023-04-07
  • 来自专栏林德熙的博客

    dotnet C# 通过 Vortice 将 ID2D1CommandList 作为特效的输入源

    如以下的例子代码 private static ID2D1CommandList CreateCommandList(ID2D1DeviceContext renderTarget) { (); var originTarget = renderTarget.Target; renderTarget.Target = commandList; { renderTarget.FillEllipse(new Ellipse(new System.Numerics.Vector2(Random.Shared.Next(Width = originTarget; return commandList; } 为了让 CreateCommandList 能够工作起来,需要将其放入到 ID2D1RenderTarget commandList = CreateCommandList(renderTarget); renderTarget.EndDraw(); 获取到 ID2D1CommandList

    65010编辑于 2023-06-18
  • 来自专栏林德熙的博客

    dotnet C# 通过 Vortice 使用 Direct2D 的 ID2D1CommandList 入门

    (); 创建完成之后,需要将 ID2D1DeviceContext 的 Target 挂过去,如以下代码 var originTarget = renderTarget.Target ; ID2D1CommandList commandList = renderTarget.CreateCommandList(); renderTarget.Target (color); // 此时绘制过去的都是在 ID2D1CommandList 里面 renderTarget.DrawRoundedRectangle (new Color4(0x64, 0x95, 0xED)); renderTarget.FillRoundedRectangle(new RoundedRectangle() (image); renderTarget.EndDraw(); 如此即可将 ID2D1CommandList 绘制到画布上 本文所有代码放在 github 和 gitee

    42820编辑于 2023-06-06
  • 来自专栏林德熙的博客

    WPF 使用 SharpDX 在 D3DImage 显示 介绍创建控件D3D 设备设置指针画出来

    , format, D3D9.Pool.Default, ref handle); using (var surface = renderTarget.GetSurfaceLevel 但是直接使用 D3D11.Texture2D 是无法画出来的,如果需要 D2D.RenderTarget 还需要通过 D3D11.Texture2D 创建 Surface 为缓冲区。 (1, 0, 0, 1)); renderTarget.Clear(null); renderTarget.DrawRectangle(new RawRectangleF (1, 0, 0, 1)); renderTarget.Clear(null); renderTarget.DrawRectangle(new RawRectangleF ; private D3DImage _d3D; private D2D.RenderTarget _d2DRenderTarget; private

    2.9K10发布于 2018-09-19
  • 来自专栏林德熙的博客

    dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染

    创建 ID2D1RenderTarget 的方法有很多个,本文是通过 ID2D1Factory1 工厂调用 CreateWicBitmapRenderTarget 方法,从一个 IWICBitmap 创建的 也就是说想要获取到 ID2D1RenderTarget 进行绘制,就需要能先拿到 IWICBitmap 类型的对象。 对象 D2D.ID2D1RenderTarget d2D1RenderTarget = d2DFactory.CreateWicBitmapRenderTarget (wicBitmap, renderTargetProperties); 以上就是最核心的步骤了,获取到 ID2D1RenderTarget 对象,即可开始 D2D 的绘制逻辑,如下面代码,修改画布颜色 using var renderTarget = d2D1RenderTarget; // 开始绘制逻辑 renderTarget.BeginDraw(

    85630编辑于 2023-04-07
  • 来自专栏林德熙的博客

    WPF SharpDx 性能优化方法

    (); // 执行耗时的业务代码 _renderTarget.DrawEllipse(ellipse, brush, 1); _renderTarget.EndDraw(); 因此优先解决这部分业务代码 的绘制效率很高,但是假定需要执行的绘制命令特别多,此时也会降低性能,因此我的一个性能比较强的应用就预先计算出某些命令不会在界面可见,这部分就不参与渲染 如以下代码,这里的代码将会很多次的获取椭圆渲染 _renderTarget.BeginDraw (); for (int i = 0; i < 1000000; i++) { var ellipse = GetEllipse(i); _renderTarget.DrawEllipse(ellipse , brush, 1); } _renderTarget.EndDraw(); 而此时如果有一个方法可以判断某些矩形在界面是不可见的,如超过画面,那么过滤掉这部分命令,可以提升很多性能 _renderTarget.BeginDraw (ellipse, brush, 1); } } _renderTarget.EndDraw(); 减少渲染命令是优化最强的方法 减少 Geometry 的绘制 在所有基础绘制命令

    1.1K30发布于 2020-08-03
  • 来自专栏逍遥剑客的游戏开发

    景深效果(Depth of Field)

    将场景渲染到一个RenderTarget,做为清晰版. 2.       将上一步得到的RenderTarget进行模糊处理,得到BluredRT(模糊版). 3.       合成.跟据距离来判断是否应该模糊,如果不在焦点范围内则绘制BluredRT,否则就绘制RenderTarget.   在这里我是把深度值存在Alpha通道中一块渲染到RenderTarget,这样在最后一步直接取color.a就可以进行深度判断了 (右图为Alpha通道 ,存储了深度值) Shader与最终效果 sampler RenderTarget; sampler BluredRT;   /

    1.4K60发布于 2018-05-21
  • 来自专栏林德熙的博客

    dotnet DirectX 通过 Vortice 控制台使用 ID2D1DeviceContext 绘制画面

    上一篇博客采用的是 CreateDxgiSurfaceRenderTarget 的方式拿到了 ID2D1RenderTarget 进行绘制,本文将和大家介绍另一个方式,通过 ID2D1DeviceContext d2D1RenderTarget = d2DFactory. (dxgiSurface, renderTargetProperties); var renderTarget = d2D1RenderTarget; 本文将替换上面代码的方法1部分, 即可进行绘制,如以下代码 // 开始绘制逻辑 renderTarget.BeginDraw(); // ); //var renderTarget = d2D1RenderTarget; // 方法2: // 创建 D2D 设备,通过设置 ID2D1DeviceContext

    78130编辑于 2023-05-23
  • 来自专栏林德熙的博客

    WPF 对接 Vortice 调用 D2D 使用 IWICBitmap 离屏渲染

    而刚好 Direct2D1 可以从一个 IWICBitmap 上使用 CreateWicBitmapRenderTarget 方法创建 ID2D1RenderTarget 对象,在 ID2D1RenderTarget 上执行绘制指导命令,从而实现将画面绘制到 IWICBitmap 上 于是新建出一个 IWICBitmap 对象,接着挂上 D2D 的 ID2D1RenderTarget 进行绘制。 ); using var renderTarget = d2D1RenderTarget; // 开始绘制逻辑 renderTarget.BeginDraw (); Render(renderTarget); renderTarget.EndDraw(); return wicBitmap; } private static void Render(D2D.ID2D1RenderTarget renderTarget) { // 以下是测试代码

    80010编辑于 2023-04-07
  • 来自专栏林德熙的博客

    dotnet Vortice 无需交换链与 DirectComposition 对接渲染层

    ); Vortice.Direct2D1.ID2D1RenderTarget renderTarget = d2D1RenderTarget; ... ); Vortice.Direct2D1.ID2D1RenderTarget renderTarget = d2D1RenderTarget; renderTarget.BeginDraw (renderTarget, clientSize); renderTarget.EndDraw(); ... // 忽略其他代码 } ); Vortice.Direct2D1.ID2D1RenderTarget renderTarget = d2D1RenderTarget; renderTarget.BeginDraw ); Vortice.Direct2D1.ID2D1RenderTarget renderTarget = d2D1RenderTarget; renderTarget.BeginDraw

    13610编辑于 2026-02-10
  • 来自专栏林德熙的博客

    WPF 对接 Vortice 在 Direct2D 绘制从 WIC 加载的图片

    using IWICBitmapFrameDecode imageFrame = decoder.GetFrame(0); 这时拿到的 imageFrame 对象还不能立刻扔到 ID2D1RenderTarget.CreateBitmapFromWicBitmap (converter); renderTarget.DrawBitmap(d2DBitmap); 以下是打开本地文件,进行解码,转换颜色格式,创建 ID2D1Bitmap 绘制的代码 private static void Render(D2D.ID2D1RenderTarget renderTarget) { using var wicImagingFactory (converter); renderTarget.DrawBitmap(d2DBitmap); } 如果要将图片绘制在给定的范围呢? (converter); using var brush = renderTarget.CreateBitmapBrush(d2DBitmap); renderTarget.FillRectangle

    68520编辑于 2023-05-16
  • 来自专栏林德熙的博客

    WPF 使用 SharpDX

    安装 首先安装 SharpDX 的库,需要安装下面几个库 创建工厂 使用 SharpDX 和 DirectX 一样,开始都需要创建工厂,然后创建RenderTarget,之后才可以显示基础图形。 创建 RenderTarget 可以尝试 WindowRenderTarget ,因为是入门博客,我不告诉大家如何使用其他几个 RenderTarget ,如果想知道,请自己多去看博客。 ); 因为需要拿到 RenderTarget 进行画基础图形,一般把 RenderTarget 放在字段。 , new RawColor4(1, 0, 0, 1)); _renderTarget.BeginDraw(); _renderTarget.DrawEllipse (ellipse, brush, 1); _renderTarget.EndDraw(); } 重新告诉大家如何画出。

    1.7K10发布于 2018-09-19
领券