Render Targets, Devices, and Resources
渲染目标,设备和资源
渲染目标就是我们程序准备画图的地方。一般来说,渲染目标是一个窗口,也可以是一个内存中的位图(bitmap),例如GDI做的backbuffer。Direct2D中的渲染目标是由ID2D1RenderTarget接口代表的。
设备是一个抽象概念,代表实际执行显示pixels的对象。硬件设备就是GPU,软件设备就是CPU,这就是所谓硬渲染和软渲染的来由。程序并不创建设备。而是,当程序创建渲染目标的时候,设备隐式创建,每个渲染目标都是和特定的设备关联的,硬件或者是软件。
资源是一个对象,程序利用这样的资源来画图。下面是一些Direct2D资源的例子:
-
Brush. Controls how lines and regions are painted. Brush types include solid-color brushes and gradiant brushes.
-
Stroke style. Controls the appearance of a line—for example, dashed or solid.
-
Geometry. Represents a collection of lines and curves.
-
Mesh. A shape formed out of triangles. Mesh data can be consumed directly by the GPU, unlike geometry data, which must be converted before rendering.
渲染目标也可以认为是一种资源。
资源可以分为依赖设备的(device-dependent)和不依赖设备的(device-independent)。
依赖资源的:某些资源可以由硬件加速。资源通常也是和某一特定设备关联的,硬件(GPU)或软件(CPU)。例如Brushes和meshes。如果设备变得不可用了,那么子玉就必须重新为新的设备创建。
不依赖资源的:保留在CPU内存中,而不需要管使用什么设备。当设备改变的时候,不必要重新创建。例如:Strock styles和geometries。
Direct2D的所有资源是由ID2D1Resource衍生的接口代表的。例如:brushes是由ID2D1Brush接口提供。
The Direct2D Factory Object
Direct2D工厂对象
使用Direct2D的第一步就是创建一个Direct2D工厂对象的实例。
The Direct2D factory creates the following types of objects:
- Render targets.
- Device-independent resources, such as stroke styles and geometries.
Device-dependent resources, 例如: brushes and bitmaps, 是由渲染目标对象创建的。
To create the Direct2D factory object, call the
D2D1CreateFactory function.
ID2D1Factory *pFactory = NULL;
HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory);
我们应该创建the Direct2D factory object ,在第一个WM_PAINT 消息前,一般在WM_CREATE消息中创建。
case WM_CREATE:
if (FAILED(D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory)))
{
return -1; // Fail CreateWindowEx.
}
return 0;
Creating Direct2D Resources
创建资源,如:
- A render target that is associated with the application window.
- A solid-color brush to paint the circle.
每个资源都是由COM接口代表的:
ID2D1HwndRenderTarget *pRenderTarget;
ID2D1SolidColorBrush *pBrush;
The following code creates these two resources.
HRESULT MainWindow::CreateGraphicsResources()
{
HRESULT hr = S_OK;
if (pRenderTarget == NULL)
{
RECT rc;
GetClientRect(m_hwnd, &rc);
D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom);
hr = pFactory->CreateHwndRenderTarget(
D2D1::RenderTargetProperties(),
D2D1::HwndRenderTargetProperties(m_hwnd, size),
&pRenderTarget);
if (SUCCEEDED(hr))
{
const D2D1_COLOR_F color = D2D1::ColorF(1.0f, 1.0f, 0);
hr = pRenderTarget->CreateSolidColorBrush(color, &pBrush);
if (SUCCEEDED(hr))
{
CalculateLayout();
}
}
}
return hr;
}
--MSND
分享到:
相关推荐
WPF渲染Render范例C#代码 WPF渲染Render范例C#代码 WPF渲染Render范例C#代码
Render-and-Compare loss that allows 3D shape and pose to be learned with 2D supervision. We evaluate our method on the challenging real-world datasets of Pascal3D+ and KITTI, where we achieve state-of...
render-header render-header在官方文档中的介绍是这样的: 参数 说明 类型 可选值 默认值 render-header 列标题 Label 区域渲染使用的 Function Function(h, { column, $index }) — — 修改列标题...
:megaphone: PS加入我们的进行帮助和讨论,让我们使render_async更好! :package: 安装 将此行添加到您的应用程序的Gemfile中: gem 'render_async' 然后执行: $ bundle install :hammer: 用法 在您的视图中...
OctaneRender 4渲染器是世界上第一个GPU-accelerated最快、无偏差、物理渲染器。这意味着Octane使用你的电脑的显卡来渲染真实感图像,而且超级快速。Octane的并行计算能力,您可以创建令人惊叹的效果。OctaneRender 4...
h 有3个参数,分别是:要渲染的元素 或 组件,可以是一个 html标签、 组件选项 或 一个函数(不常用),该参数为必填项。2. 对应属性的数据对象,比如组件
Mote::Render提供了三种用于渲染模板的辅助方法: partial , view和render 。 Cuba . define do on "about" do # `partial` renders a template without a layout. res . write partial ( "about" ) end on ...
元数据库:Render上的元数据库
reposed_render_maps 在源姿态和目标姿态之间渲染流图和蒙版贴图步骤1: 在config.py中,更新以下内容: target_folder ='./'#要放置结果的位置(flowmap.png,maskmap.png) file_path_source ='./sample_data/...
一个渲染框架render frame 正在完善当中。
React渲染时间React钩子检查渲染所需的时间演示版安装yarn add react-render-time用法import React from "react"import useRenderTime from "react-render-time"const App = ( ) => { useRenderTime ( "App" ) ...
Unity 渲染调试工具 renderDoc,安装成unity插件,通过unity直接调用, 查询渲染状态, 帮助优化渲染性能, 方便快捷。
Json渲染 将json数据渲染成界面的vue组件库,是根据, 以及相关项目开发的vue3版本 详细参考 特性 将json数据渲染成界面 基于vue3开发 支持任何html组件和vue项目中引用的组件进行渲染,支持组件任何属性 支持将json...
资源分类:Python库 所属语言:Python 资源全名:render-python-1.13.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
IRender:基于webgl的轻快图像渲染
余烬渲染助手 作为模板助手: {{did-insert}} , {{did-update}} , {{will-destroy}} 最初的想法来自 。安装ember install ember-render-helpers用法例单击“ Toggle按钮将切换isVisible标志。 当它切换为true ,将...
先说明几点注意事项: 1、完成本教程需要的软件:建模Solidworks2006、渲染Maxwell Render 1.0Final、Maxwell的SW插件swMaxwell2006.dll、降噪处理Neat image 5.2 Plus。SW想必大家都有,Maxwell插件在那个介绍贴发...
渲染@首页 使用Render @ Home为我渲染 记得把搅拌机放在你的路上 也下载dotnet5 在此链接
资源分类:Python库 所属语言:Python 资源全名:render-python-2.2.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
twilight render v1.12黎明渲染器,破解版