好的,在我的XNA项目中,我添加了简单的着色器+模型加载代码,一切正常。我在3Ds Max中创建了一个非常简单的低细节模型。导出并导入FBX格式的XNA。
问题是:如果我将简单的相机移动到与该型号相距一定距离的地方,其组件之一就会开始闪烁。我尝试了另一种模型,并且情况相同,只有当我与模型之间有一定距离时,某些组件才会开始闪烁。
这种闪烁(或闪烁或..)仅在带有纹理的对象上出现(可能),并且看起来像:在每帧中,模型的随机部分/像素(或不是那么随机)被模型或其组件后面的对象所代替。 。:(
更新:现在我知道-问题出在我的模型中(我检查了其他一些模型)。我不明白为什么,但是“平面”对象却发出了这种闪烁。也许问题不在Plane对象中。

这只是一个有根据的猜测,但是:您的远平面距离太远,或者您的近平面距离太近,或者两者都存在。
透视相机为您提供了一个可视区域,如下所示:

Z缓冲区(深度缓冲区)涵盖了近平面和远平面之间的范围。典型的Z缓冲区可能具有24位精度,从而为您提供2 24个可能的值。您的近平面和远平面的距离越远,每个可能值必须涵盖的世界空间距离就越大。换句话说:您的Z缓冲区的准确性较低。
您所看到的被称为“ Z战 ”。这是Z缓冲区不够准确的地方,无法区分两个给定像素的深度。因此,最终得到的像素应该被拒绝为“位于”已渲染的东西之后,而被绘制。
(或者,您的模型有一些共面或接近共面的三角形-那些三角形的表面过于靠近。相同的问题:Z缓冲区的精度不足以区分两个表面。)
您可能还希望启用背面剔除(RasterizerState.CullCounterClockwise)(如果尚未启用)。这样可以剔除背对摄像机的三角形,从而消除了Z争斗的一种可能来源。