XNA纹理问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XNA纹理问题相关的知识,希望对你有一定的参考价值。
好吧,最近我一直在尝试很多新事物,而且我有一些停滞点。我决定离开3d,因为我认为自己不了解并且不了解所涉及的编码。我虽然数学很不错,所以我想再给它一个机会。
我正在尝试使用C#学习3D XNA,我最近已经完成了2D的开发并希望继续前进。我的问题是,在我看来,使用最基本的3d形状(立方体)会遇到问题。从Blender成功导出多维数据集(第7次尝试> _>)并将其导入XNA之后,我无法获得正确显示在多维数据集上的纹理,因此我从示例源下载了多维数据集模型代码文件,并尝试使用它,并且它是默认纹理,但我仍然遇到问题。
基本上,绘制立方体的代码是:
foreach (ModelMesh mesh in model.Meshes)
{
GraphicsDevice.RasterizerState = RasterizerState.CullClockwise;
foreach (BasicEffect effect in mesh.Effects)
{
effect.TextureEnabled = true;
//effect.Texture = texture;
effect.World = world;
effect.View = view;
effect.Projection = projection;
effect.LightingEnabled = false;
}
mesh.Draw();
}
RenderState
和LightingEnabled
是新的,试图自己修复,当我使用自己的纹理时,该纹理看起来像是在拉伸,并且没有在立方体上显示整个图像,但是所有面孔看起来相同,因此没有包装它。
另外,要查看所有的面孔,我将旋转立方体,如:
position -= new Vector3(0, 0.00f, 0.0100f);
angley += 0.01f;
anglez += 0.01f;
world = Matrix.CreateScale(1.5f) * Matrix.CreateRotationZ(anglez) * Matrix.CreateRotationY(angley) * Matrix.CreateTranslation(position);
z的变化是,所以我可以检验另一种理论。
默认纹理是沙色纹理,我不确定它是否在拉伸,因为它几乎是纯色。但是盒子本身似乎很奇怪(看起来好像我可以透过近处的面孔看到,而且我看着对立的盒子的背面)]
我希望有人可以帮我,似乎它应该比现在看起来要简单得多,绘制一个简单的纹理立方体,并且在线上的大多数教程都来自较早版本的XNA,因此代码不匹配,当我尝试用当前代码替换它时,我迷路了。 (在使用代码而不是模型创建多维数据集的教程中。)
无论如何,谢谢您的回答。
编辑1:用CreateOrthographic
绘制此立方体会使它看起来正确(第一个使用透视图),但仍然没有纹理的爱:(
编辑2:当我使用多维数据集时,它是拉伸的,当我使用源中的多维数据集时,它是纯色的。
编辑3:如果提到我使用字体/ spritebatch
显示FPS,我可能会早早得到答案。当我弄清楚为什么它不起作用并将它与DID可以工作的示例进行比较时,我发现了,现在,有人知道如何使它起作用吗?
对我自己和其他遇到此问题的人>。<
您在使用:
SpriteBatch.begin()
要在您的代码中执行任何操作?如果是这样的话,这可能会破坏程序在3d中的呈现方式,请查看此链接(对于XNA 4.0之前的版本):
http://blogs.msdn.com/b/shawnhar/archive/2006/11/13/spritebatch-and-renderstates.aspx
以及如果使用XNA 4.0,则为此链接:
特别是解决此问题的行是:
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
在foreach循环之前添加了此内容,为我解决了此问题,但是您可能需要尝试该文章中的其他内容
对于其他阅读本文的人,祝您XNA梦想好运:D
以上是关于XNA纹理问题的主要内容,如果未能解决你的问题,请参考以下文章