【问题标题】:Draw a rectangle with texture (VertexPositionTexture) in Xna 3d在 Xna 3d 中绘制一个带有纹理(VertexPositionTexture)的矩形
【发布时间】:2014-06-11 12:04:02
【问题描述】:

我正在尝试使用 VertexPositionTexture 绘制一个带有纹理的矩形,但出现错误:

发生了“System.NotSupportedException”类型的未处理异常 在 Microsoft.Xna.Framework.Graphics.dll 中

附加信息:XNA Framework Reach 配置文件需要 TextureAddressMode 是 Clamp 时使用的纹理大小不是 二的幂。

谢谢。

【问题讨论】:

  • 错误信息是明确的。使用两倍大小的纹理,将sampler state 模式设置为钳位,或将图形配置文件更改为高清。做任何一个都可以解决你的问题。
  • 好吧,编辑审查人员不同意我的观点,即您的代码转储与您的问题无关,但您的顶点或顶点的使用并没有做错任何事情。您只需要阅读错误消息的内容即可。三种可能的解决方案中只有一种涉及插入一行代码(采样器状态设置)。
  • 解决了我的问题,改成高清了。谢谢!
  • 请注意,高清并非在所有计算机上都可以使用(如果我没记错的话)。
  • @Colton 很少有现代计算机无法处理高清配置文件。它更适用于 windows phone 定位。

标签: xna


【解决方案1】:

三个选项:

(1) 尝试添加这一行:

GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

这可能会改变纹理的外观。

(2)

更改纹理的高度和宽度,使高度 * 宽度是 2 的幂。(即 ((2^9) * (2^9)) = 512*512 = 2^18)

(3) 将 XNA 配置文件从 Reach 更改为 Hi-def。

Right-click your project in Solution Explorer
Choose Properties
Focus the XNA Game Studio tab, and make your selection

(http://blogs.msdn.com/b/shawnhar/archive/2010/07/19/selecting-reach-vs-hidef.aspx)

【讨论】:

  • 最好包含第三个选项:因为 OP 使用了它。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多