好吧,我最近尝试了很多新的东西,我有几个停顿点。我决定离开3d,因为我觉得我没有,也无法理解所涉及的编码。我很擅长数学,所以我想再试一次。
我试图学习3d XNA在c#,我最近已经锻炼了2d,并希望继续前进。我的问题是(在我看来)最基本的三维形状,一个立方体,我会遇到问题。在成功地从搅拌器导出我的多维数据集(在第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,我可能会更早得到答案。当我想出为什么它不起作用的时候,我把它和一个确实有用的样本做了比较,我发现了,现在,有人知道如何使它工作吗?
发布于 2011-02-18 15:47:55
对于我自己,以及其他遇到这个问题的人,>.<
你用的是:
SpriteBatch.begin()在你的代码里做什么?如果是这样的话,这将破坏程序在3d中呈现的方式,请查看这个链接(对于前XNA 4.0):
http://blogs.msdn.com/b/shawnhar/archive/2006/11/13/spritebatch-and-renderstates.aspx
如果您使用XNA4.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;在foreach循环之前为我解决了这个问题,但是您可能需要尝试本文中的其他行。
对其他读到这篇文章的人来说,祝你的XNA梦想好运:D
https://stackoverflow.com/questions/5042082
复制相似问题