XNA纹理问题

Rya*_*s91 6 c# xna

好吧,我最近一直在尝试很多新事物,而且我有一些停止点.我决定离开,因为3D我想我只是没有和无法理解的编码参与,我很擅长数学的,所以我想我会给它一个镜头.

我想学习C#3D XNA,我最近制定了2D,并希望继续前进,我的问题是,随着(在我看来)最基本的三维形状,立方体,我遇到的问题,之后从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();
            }
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

z变化是我可以测试另一种理论.

默认纹理是一种淡淡的纹理,我不确定它是否适合它,因为它几乎是一种纯色,但盒子本身似乎有奇怪的代表(它看起来好像我可以通过近面看到,我看着后面对立的)

我希望有人可以帮助我,它似乎应该更简单然后似乎是,绘制一个简单的纹理立方体,并且大多数在线教程都来自旧版本的XNA,所以代码不匹配,当我尝试用当前代码替换它时,我迷路了(在教程中,在代码中创建一个多维数据集,而不是模型.)

无论如何,谢谢你的答案.

编辑使用CreateOrthographic绘制此立方体使其看起来正确(第一个使用透视)但仍然没有纹理爱:(

EDIT2,当我使用我的立方体拉伸时,当我使用来自源,它是一个纯色.

EDIT3

如果我提到我正在使用字体/ spritebatch显示FPS,我可能会早点得到答案,当我找出它为什么不起作用时,将它与DID工作的样本进行比较,我发现它,现在,有没有人知道如何做到这一点?

Rya*_*s91 6

对自己和其他遇到此问题的人>.<

你正在用吗:

SpriteBatch.begin()
Run Code Online (Sandbox Code Playgroud)

在你的代码中做任何事情?如果是这样,这搞砸了程序在3d中渲染的方式,请查看此链接(对于pre XNA 4.0):

http://blogs.msdn.com/b/shawnhar/archive/2006/11/13/spritebatch-and-renderstates.aspx

如果你使用XNA 4.0,这个链接:

http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

解决这个问题的特别是:

GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
Run Code Online (Sandbox Code Playgroud)

在foreach循环之前添加,为我修复了这个问题,但您可能需要尝试该文章中的其他行

对于其他读这篇文章的人来说,祝你的XNA梦想好运:D