【发布时间】:2014-03-25 16:16:31
【问题描述】:
我对 XNA 有点陌生,我正在使用 BEPU 物理创建一个 3D 游戏(这是大学课程所必需的)。我正在尝试从 Microsoft 的粒子示例中实现一个简单的粒子系统。在粒子的 Draw() 方法中,执行如下代码:
// Activate the particle effect.
foreach (EffectPass pass in particleEffect.CurrentTechnique.Passes)
{
pass.Apply();
//Draw particle primitives
...
}
CurrentTechnique.Passes 中有一个名为 P0 的 pass,它对应于粒子效果 FX 文件中的以下 pass:
// Effect technique for drawing particles.
technique Particles
{
pass P0
{
VertexShader = compile vs_2_0 ParticleVertexShader();
PixelShader = compile ps_2_0 ParticlePixelShader();
}
}
但是,此操作会导致我的某些模型的 UV 贴图渲染不正确,并且除了用于粒子系统的着色器之外,我没有使用任何自定义着色器。是否可以有效地撤消应用此通道的效果以绘制我的其他模型?我可以在游戏的主 Draw() 循环开始时调用 GraphicsDevice.Reset(),这解决了问题,但在全屏模式下,每次调用 GraphicsDevice.Reset() 时屏幕都会闪烁黑屏。
【问题讨论】: