首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Direct3D:无对角线的线框

问Direct3D:无对角线的线框
EN

Stack Overflow用户
提问于 2008-11-06 12:03:56
回答 3查看 2.9K关注 0票数 1

在Direct3D中使用线框填充模式时,由于面被拆分为两个三角形,因此所有矩形面都会显示一条对角线。如何消除这一行?我还想删除隐藏的表面。线框模式不会这样做。

我需要在等轴测线框视图中显示一个Direct3D模型。渲染的场景必须显示模型的面的边界,但必须排除对角线。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-06 12:13:11

去除对角线是很棘手的,因为硬件可能只绘制三角形,并且很难确定哪条边是对角线。或者,可以应用线框纹理(或生成合适纹理的材质球)。这将解决隐藏线问题,但看起来会很奇怪,因为线的粗细取决于z距离。

使用线基元并不简单,尽管可以很容易地移除背离相机的表面,但部分遮挡的表面将需要手动裁剪。作为最后的想法,执行两遍方法-第一遍绘制填充的多边形,但仅绘制到z缓冲区,然后使用适当的z偏置在顶部绘制线条。这将处理部分遮挡的表面问题。

票数 2
EN

Stack Overflow用户

发布于 2008-11-06 14:02:14

内置线框模式渲染基本体的边缘。就像在D3D中一样,原语是三角形(或直线,或点,但不是任意多边形),这意味着内置的方式不会切割它。

我猜你必须查找某种“边缘检测”算法。这些操作可以在图像空间中操作,您可以将模型渲染到纹理中,为每个逻辑多边形指定唯一的颜色,然后使用像素着色器执行后处理过程,并检测颜色中的任何更改(颜色更改=输出黑色,否则输出其他颜色)。

或者,您可以构建一个只包含所需边的行列表,并对其进行渲染。

另一种选择是使用Direct3D 10中的几何着色器。不知何故,这里有很多不同的选项。

票数 1
EN

Stack Overflow用户

发布于 2008-11-06 20:30:40

我认为你需要手动绘制这些线,因为线框模式是一种内置模式,所以我不认为你可以修改它。您可以获取网格中的顶点列表,并将它们处理为需要绘制的线条列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/268428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档