如何使用 Direct2D 高效地将像素写入屏幕

2024-03-31

我有一个像素数组 (m_pixels),我想使用 Direct2D 将其渲染到屏幕上。 该数组包含 10,000 个元素(100 行,每行 100 个像素)。下面的代码循环遍历像素并将它们作为 10x10 矩形绘制到屏幕上。有没有更有效的方法来执行此操作?如何向像素/图像添加高斯模糊效果?

m_d2dContext->BeginDraw();
m_d2dContext->Clear(ColorF(0.0f, 0.0f, 0.0f));



// Render m_pixels
// m_pixels is updated by the solver directly before render
auto rect = D2D1_RECT_F();
ComPtr<ID2D1SolidColorBrush> pBlackBrush;
DX::ThrowIfFailed(m_d2dContext->CreateSolidColorBrush(ColorF(1.0f, 0.0f, 0.0f),&pBlackBrush));

for (int i=0; i<10000; i++){
    //Update the color
    pBlackBrush->SetColor(D2D1::ColorF(m_pixels[i]*3, m_pixels[i], m_pixels[i]));
    //Update the rectangle size
    rect.top = 10*floor(i/100);
    rect.left = 10*floor(i%100);
    rect.bottom = 10*floor(i/100) + 10;
    rect.right = 10*floor(i%100) + 10;
    //Set the rectangle color
    m_d2dContext->FillRectangle(rect, pBlackBrush.Get());
}

HRESULT hr = m_d2dContext->EndDraw();

尝试使用ID2D1RenderTarget::CreateBitmap() and ID2D1RenderTarget::DrawBitmap()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Direct2D 高效地将像素写入屏幕 的相关文章

  • 如何检查 Windows 应用商店应用程序中是否存在文件?

    还有其他方法可以检查 Windows 应用商店应用程序中是否存在文件吗 try var file await ApplicationData Current LocalFolder GetFileAsync Test xml no exce
  • XAML 绑定到属性

    我的 XAML C Windows 应用商店应用程序中有复选框 我还有 bool 属性 WindowsStoreTestApp SessionData RememberUser这是公共的和静态的 我想要复选框的属性IsChecked与此 b
  • 有没有一种在不使用图像的情况下使用 HTML5 canvas 和 javascript 动态绘制云的好方法?

    我正在尝试为我的网站创建一个背景 该背景使用画布来绘制内容 获取它的数据 URL 并将其设置为元素的背景图像属性 该方法有效 但我找不到在画布上绘制云的好方法 其他更简单的东西 比如太阳和星星 在没有图像的情况下很容易完成 我更愿意让整个脚
  • 最小化时窗口内容消失

    我有一个简单的类 当鼠标拖动时画一条线 或者当鼠标按下 释放 时画一个点 当我最小化应用程序然后恢复它时 窗口的内容消失 除了最后一个点 像素 我明白这个方法super paint g 每次窗口更改时都会重新绘制背景 但无论我是否使用它 结
  • 在透明 JPanel 上绘画时留下痕迹

    我是一个相对较新的 Java 图形程序员 这是我正在尝试的一个简单程序 这是完整的代码 分为 3 个类 Class 1 import javax swing import java awt import java awt event pub
  • 绘制别名、像素完美的 1px 样条线(特别是 Catmull-Rom)

    简要背景 我正在开发一个基于 Web 的绘图应用程序 需要绘制穿过其控制点的 1px 粗样条线 我正在努力解决的问题是我需要绘制 p1 和 p2 之间的每个像素 就像我使用 1px 铅笔工具一样 因此 没有抗锯齿功能 一次一个像素 这需要手
  • 允许用户在 Windows 8 应用程序中使用 RichEditBox 中的选项卡?

    现在 选项卡功能将焦点移动到下一个控件 我希望它实际上只是在文本框中选项卡 我注意到您也无法在 Windows 8 邮件应用程序中使用 Tab 键 还有 RichTextBox 替代品吗 目前 在 RTM 版本中 没有AcceptsTab就
  • 获取任何给定字符的宽度(以像素为单位)

    我有一个非常棒的想法 但无法找出 NET Framework 中是否有任何类 任何版本 最好是 3 5 或 4 0 允许您传入字符 并获取该字符的宽度 以像素为单位 无论使用哪种字体 字体大小或字体装饰 有人可以指出我正确的方向吗 像这样的
  • 给定焦点和相机主中心,如何创建透视投影矩阵

    我设法使用 OpenCV 获取相机的内在和外在参数 因此我有 fx fy cx 和 cy 我还有屏幕 图像的宽度和高度 但是如何根据这些参数创建 OpenGL 透视投影矩阵呢 glFrustum 展示了如何在给定 Z 近 Z 远以及图像宽度
  • DirectX 11 ClearRenderTargetView 恢复透明缓冲区?

    我正在尝试创建一个使用 directx 进行绘制的窗口opaque上面的内容透明的视图 即桌面显示出来 使用 DirectX11 我尝试执行以下操作 但它并没有使背景透明 事实上 我输入的任何不透明度值都会给出完全相同的结果 我在做什么 f
  • 使用 WinForms 绘制宽线时出现 OutOfMemoryException

    这个太疯狂了 我只画了几千条线OnPaint处理程序 没有问题 当pen Width lt 1 或者当屏幕上没有很多行时 好的 我画了一张比例尺地图 线宽随地图缩放 当我缩放一些地图时 我得到OutOfMemoryException WHY
  • c# UWP - 将字节数组转换为 InMemoryRandomAccessStream/IRandomAccessStream

    我在将字节数组转换为InMemoryRandomAccessStream or IRandomAccessStream在 Windows 8 中 这是我的代码 但它不起作用 internal static async Task
  • 在 DirectX9 中使用 ASSIMP 加载 .obj 模型

    这是我第一次发帖 我对这个名为 ASSIMP 的 3d 模型加载库有这个问题 我正在尝试将其集成到示例 Direct3d9 应用程序中 但进展并不顺利 我是一名经验丰富的 C 程序员 因此帮助我不会太麻烦 所以我过去制作了几个 d3d9 应
  • 在 JPanel 与 JComponent 中绘图

    我需要一些帮助来理解为什么 JComponent 与 JPanel 中的绘图工作方式不同 import java awt Color import java awt Graphics import java awt Graphics2D i
  • Phong 着色问题

    我正在根据以下内容编写着色器冯模型 http en wikipedia org wiki Phong reflection model 我正在尝试实现这个方程 其中 n 是法线 l 是光线方向 v 是相机方向 r 是光反射 维基百科文章中更
  • C# 窗口形式的漂亮图形

    我需要使用 C 在 Windows 窗体中创建一些简单的图形 简单地说 我指的是线条 圆圈等 但是 当我画画时 例如实心圆 边缘不平滑 正如使用方形像素绘制圆时所预期的那样 但是当在矢量程序中使用相同数量的像素绘制相同的圆时 它看起来很完美
  • 在Android上显示简单的位图

    图形初学者在这里 我试图在我的设备上显示一个简单的图像 但没有出现任何内容 并且日志 没有显示任何错误 程序运行但没有任何反应 这是我的代码 protected void onDraw Canvas canvas canvas drawBi
  • 使用 Metro 风格应用程序启动桌面应用程序

    有没有办法从 Windows 8 上的 Metro 风格应用程序启动桌面应用程序 我正在尝试创建一些简单的桌面应用程序快捷方式 以替换开始屏幕上看起来不合适的桌面图标 我只需要一些超级简单的东西 最好是用 C 编写 以便在应用程序加载后立即
  • Windows 8 Metro 应用程序的依赖注入框架

    我似乎找不到 Windows 8 Metro 应用程序的依赖注入框架 win8 Metro应用程序有框架吗 Ninject 尚不支持 win8 Metro 那么有人有建议吗 城堡 春天 你可以尝试Unity 3 0 for NET4 5 预
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜

随机推荐