D3D11:如何绘制简单的像素对齐线?

2023-11-26

我尝试用 D3D11 在两个顶点之间画一条线。我在 D3D9 和 D3D11 中有一些经验,但在 D3D11 中绘制一条线(从一个给定像素开始并以另一个像素结束)似乎是一个问题。

我做了什么:

  1. 我向每个顶点的像素坐标添加了 0.5f 以适应纹素/像素坐标系(我阅读了 Microsoft 页面以了解 D3D9 和 D3D11 坐标系之间的差异):

    f32 f 关闭 = 0.5f; ColoredVertex newVertices[2] = { { D3DXVECTOR3(fStartX + fOff, fStartY + fOff,0), vecColorRGB }, { D3DXVECTOR3(fEndX + fOff, fEndY + fOff,0), vecColorRGB } };

  2. 生成一个正交投影矩阵以适合渲染目标:

    D3DXMatrixOrthoOffCenterLH(&MatrixOrthoProj,0.0f,(f32)uRTWidth,0.0f,(f32)uRTHeight,0.0f,1.0f); D3DXMatrixTranspose(&cbConstant.m_matOrthoProjection,&MatrixOrthoProj);

  3. 设置光栅化器状态、混合状态、视口...

  4. 将顶点绘制为 D3D11_PRIMITIVE_TOPOLOGY_LINELIST

问题: 该线似乎短了一个像素。它从给定的像素坐标开始并完美契合。线条的方向看起来是正确的,但我想要线条结束的像素仍然没有着色。看起来这条线只短了一个像素......

有教程解释这个问题吗?或者有人遇到同样的问题吗?我记得在 D3D9 中这并没有那么困难。

请询问您是否需要更多信息。

谢谢,斯特凡

编辑:找到 d3d10 的光栅化规则(应该与 d3d11 相同):http://msdn.microsoft.com/en-us/library/cc627092%28v=vs.85%29.aspx#Line_1

我希望这能帮助我理解......


根据光栅化规则(上面问题中的链接)我可能找到了一个应该有效的解决方案:

  1. 对顶点 StartX
  2. 将 (0.5/0.5) 添加到起始顶点(就像我之前所做的那样)以将顶点移动到像素的中心
  3. 添加(1.0/1.0)到结束顶点,将顶点移动到右下角

这是为了告诉光栅化器应该绘制线条的最后一个像素。

f32 fXStartOff = 0.5f;
f32 fYStartOff = 0.5f;
f32 fXEndOff = 1.0f;
f32 fYEndOff = 1.0f;

ColoredVertex newVertices[2] = 
{
    { D3DXVECTOR3((f32)fStartX + fXStartOff, (f32)fStartY + fYStartOff,0), vecColorRGB },
    { D3DXVECTOR3((f32)fEndX + fXEndOff , (f32)fEndY + fYEndOff,0), vecColorRGB }
};

如果您知道更好的解决方案,请告诉我。

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

D3D11:如何绘制简单的像素对齐线? 的相关文章

随机推荐

  • nasm 汇编语言中的 $ 是什么? [复制]

    这个问题在这里已经有答案了 这是我的汇编级代码 section text global start start mov eax 4 mov ebx 1 mov ecx mesg mov edx size int 0x80 exit mov
  • 如何用Java编写无序对的集合

    我需要一个 Set HashSet 这样如果我插入一对 a b and if b a 已经在集合中 插入将被忽略 如何在 Java 中做到这一点 非常感谢 嗯 这取决于hashCode and equals 你的方法Pair班级 他们需要忽
  • 如何告诉 Buildout 从 URL 安装 Egg(不带 pypi)

    我有一些可以通过 URL 访问的彩蛋 比如说http myhosting com somepkg egg 现在我没有在 pypi 上列出这个 somepkg 我如何告诉 buildout 为我获取并安装它 我尝试了一些食谱 但到目前为止还没
  • 在 C# 中传递泛型作为泛型类型参数

    我在 C 中对泛型做了一个小实验 我遇到了一个问题 我想将泛型类型作为类型参数传递 并带有约束来实现我不知道其类型的泛型接口 这是我的例子 using System using System Collections Generic usin
  • 使用 jq 或 sed 替换 JSON 中的属性或键

    有一个像这样的大json envConfig environmentName versions name version1 value Dev name version2 host qa userRoles name Roles
  • 如何用socket地址获取自己的IP地址?

    我想获取启动程序的计算机的 IP 地址 以便能够将其发送到客户端 但我总是得到 0 0 0 1 而不是真实的 IP 地址 例如 127 0 0 1 我目前能够获取端口 但无法获取 IP 地址 我怎么才能得到它 最好的解决方案是能够通过soc
  • 如何通过库名称找到库的文件名?

    如何通过库名称找到库的文件名 换句话说 当我使用 lc 时 我知道它是 lib libc so 6 或类似的东西 我希望能够键入一些命令 其中 lc 是输入 lib 是 libc so 6 是输出 为了进一步扩展这个想法 我想指定我自己的搜
  • 用于扫描可用 Wi-Fi 网络的 iOS API 是什么

    这就是问题所在 但这是一个长版本 我正在开发一个需要模仿 Belkin WeMo 的连接工作流程的项目 WeMo 是一个可以通过 iOS 应用程序控制的物理开关 设置的工作原理如下 WeMo 充当 Wi Fi 路由器 它会广播 SSID 而
  • Spring 4 MVC - Rest服务 - 在bean中使用默认值

    我在用Spring 4 1 4并实现一个简单的REST服务 我确实有一个POST方法得到一个Person对象作为请求 ResponseStatus value HttpStatus CREATED RequestMapping value
  • Google 容器引擎中的 Kubernetes HTTPS 入口

    我想公开在 Google Container Engine 中运行的 HTTP 服务仅 HTTPS负载平衡器 如何在入口对象中定义我想要的HTTPS仅负载均衡器而不是默认 HTTP 或者有什么办法可以永久删除HTTP来自创建的负载均衡器的协
  • Xcode 4 中的“运行 > 在 Objective-C 异常时停止”?

    也许有人知道 Xcode 4 中的 运行 gt 在 Objective C 异常时停止 菜单在哪里 我有时在 Xcode 3 中使用过它 但它在新的 IDE 中消失了 在xcode 4的左侧栏中 点击断点选项卡 第 6 个 选项卡结束 点击
  • 如何让 Maven 2 构建 2 个独立的 WAR 文件

    当做一个mvn install我想在我的目标目录中得到 2 个 WAR 文件 其中一个将包含生产 web xml另一个将包含test uat web xml 我试过这个
  • 我如何运行 Conda?

    我安装了 Anaconda 并且可以运行 Python 所以我假设我安装正确 按照此介绍性文档 我正在尝试安装 Python v3 3 因此我将以下行复制并粘贴到我的控制台中 conda create n py33 python 3 3 a
  • 将VC++的__try/__ except EXCEPTION_STACK_OVERFLOW移植到MinGW

    我正在尝试使用 VC 的 try except 语句将一些代码移植到 MinGW bool success true try except EXCEPTION STACK OVERFLOW GetExceptionCode EXCEPTIO
  • 通过 IdeaVim 在 IntelliJ 中使用 Vim 插件

    有没有办法通过 IdeaVim 在 IntelliJ 中使用 Vim 插件 在这种情况下 我正在寻找一种使用 easymotion Vim 插件的方法 您可以使用acejump插件或emacsIDEAs 不要被它的名字吓到 它只是介绍了 a
  • 使用 Pandas 从另一个数据帧中删除一个数据帧

    我有两个不同大小的数据框 df1 nad df2 我想从中删除df1存储在其中的所有行df2 所以如果我有df2等于 A B 0 wer 6 1 tyu 7 And df1等于 A B C 0 qwe 5 a 1 wer 6 s 2 wer
  • 删除R中tmap中的图例

    我有一个简单的问题 如何删除 R 中 tmap 中自动添加的图例 在这种情况下 我想删除右侧描述 级别 的图例 这是我尝试过的 tm shape densities polygons tm polygons col level palett
  • matlab:将向量划分为固定大小的重叠块

    我有一个向量 我想将其拆分为大小重叠的子向量cs轮流在sh 想象输入向量是 v 1 2 3 4 5 6 7 8 9 10 11 12 13 A 1 13 given a chunksize of 4 cs 4 和 2 sh 2 结果应如下所
  • 调用未定义函数curl_init()错误

    我在 Win 64 位操作系统 php 5 6 8 上使用 Eclipse PDT 来开发 PHP 我遇到过 Call to undefined function curl init 错误 我删除了 前extension php curl
  • D3D11:如何绘制简单的像素对齐线?

    我尝试用 D3D11 在两个顶点之间画一条线 我在 D3D9 和 D3D11 中有一些经验 但在 D3D11 中绘制一条线 从一个给定像素开始并以另一个像素结束 似乎是一个问题 我做了什么 我向每个顶点的像素坐标添加了 0 5f 以适应纹素