在Direct3D中使用线框填充模式时,由于面被拆分为两个三角形,因此所有矩形面都会显示一条对角线。如何消除这一行?我还想删除隐藏的表面。线框模式不会这样做。
我需要在等轴测线框视图中显示一个Direct3D模型。渲染的场景必须显示模型的面的边界,但必须排除对角线。
发布于 2008-11-06 12:13:11
去除对角线是很棘手的,因为硬件可能只绘制三角形,并且很难确定哪条边是对角线。或者,可以应用线框纹理(或生成合适纹理的材质球)。这将解决隐藏线问题,但看起来会很奇怪,因为线的粗细取决于z距离。
使用线基元并不简单,尽管可以很容易地移除背离相机的表面,但部分遮挡的表面将需要手动裁剪。作为最后的想法,执行两遍方法-第一遍绘制填充的多边形,但仅绘制到z缓冲区,然后使用适当的z偏置在顶部绘制线条。这将处理部分遮挡的表面问题。
发布于 2008-11-06 14:02:14
内置线框模式渲染基本体的边缘。就像在D3D中一样,原语是三角形(或直线,或点,但不是任意多边形),这意味着内置的方式不会切割它。
我猜你必须查找某种“边缘检测”算法。这些操作可以在图像空间中操作,您可以将模型渲染到纹理中,为每个逻辑多边形指定唯一的颜色,然后使用像素着色器执行后处理过程,并检测颜色中的任何更改(颜色更改=输出黑色,否则输出其他颜色)。
或者,您可以构建一个只包含所需边的行列表,并对其进行渲染。
另一种选择是使用Direct3D 10中的几何着色器。不知何故,这里有很多不同的选项。
发布于 2008-11-06 20:30:40
我认为你需要手动绘制这些线,因为线框模式是一种内置模式,所以我不认为你可以修改它。您可以获取网格中的顶点列表,并将它们处理为需要绘制的线条列表。
https://stackoverflow.com/questions/268428
复制相似问题