0

无论出于何种原因,这都令人惊讶地难以诊断,但我认为这里的某个人将能够很快说出问题所在。

对我来说,当多边形应该是顺时针缠绕时,看起来多边形是用逆时针缠绕绘制的,也就是说,它们是朝内而不是朝外的。我想知道是否有另一种方法(除了创建冗余多边形)在两侧(正面和背面)制作 directx 填充多边形。

以下是渲染模型的多张截图(这是一个麋鹿玩具):

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

为了比较,另一个模型正确渲染,如下所示:

在此处输入图像描述

谢谢你看

4

1 回答 1

3

就像亚当迈尔斯所说的那样,很可能是缺乏深度测试。以下是Fixed-Function流水线深度测试的链接:Z Buffer

根据您使用的 DirectX 版本,您必须进行不同的设置。最终,您可以像这样在 HLSL 中启用深度测试:

ZEnable = true;

如果您使用的是固定功能管道,则必须设置设备渲染状态:

dev->SetRenderState(D3DRS_ZENABLE, TRUE);

但是,如果是因为三角形“缠绕”又名剔除模式,您可以在 HLSL 着色器中更改它,如下所示:

CullMode = none; // Where Cullmode can be none, ccw, or cw

同样,如果您使用的是固定功能管道,您可以设置设备渲染状态,如下所示:

dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
//D3DCULL_NONE, D3DCULL_CCW or D3DCULL_CW

cullmode设置为 none 将导致两边都被绘制。我很确定这两个问题之一就是您从这些屏幕截图中遇到的问题。祝你好运!

于 2013-07-26T23:50:59.140 回答