【发布时间】:2014-07-07 10:57:30
【问题描述】:
您好,首先我想让您知道,我是 XNA 的新手。
我为 Surface 创建了一个 XNA 应用程序。在我的应用程序中,我正在绘制一个 fbx 模型。我的问题是,我不知道如何绘制多个模型。这是我的代码,所以你可以看到我是如何绘制的:
protected override void Draw(GameTime gameTime)
{
if (!applicationLoadCompleteSignalled)
{
// Dismiss the loading screen now that we are starting to draw
ApplicationServices.SignalApplicationLoadComplete();
applicationLoadCompleteSignalled = true;
}
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
rot += 0.0005f;
foreach(Model model in modelList)
{
DrawModel(model);
}
graphics.GraphicsDevice.DepthStencilState = DepthStencilState.Default;
base.Draw(gameTime);
}
private void DrawModel(Model myModel)
{
foreach (ModelMesh mesh in myModel.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting(); // Beleuchtung aktivieren
effect.World = Matrix.CreateRotationZ(rot) * worldMatrix;
effect.View = viewMatrix;
effect.Projection = projectionMatrix;
}
mesh.Draw();
}
}
首先显示的模型只是一个平面。现在我想添加一个立方体,所以我在我的更新中调用它:
if(Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.A))
{
LoadModel("cube");
}
LoadModel(String) 只是加载模型并将其添加到模型列表中。但是立方体没有显示出来。
感谢您帮助我。
【问题讨论】:
-
看起来您将模型存储在 modelList 中。您应该能够绘制该列表中的所有内容。所以只需将更多模型添加到模型列表中。我猜在 LoadContent() 中。
-
我想在按下 A 键时使用 LoadModel 将新模型添加到列表中。但没有任何改变。但问题不在 LoadModel() 中,因为在开始时使用此函数加载了飞机。即使我在开始时(在 LoadContent() 中)在平面之后加载多维数据集,也不会显示多维数据集。
-
您必须向您的问题添加更多信息,以便其他人能够分析您的问题。您的 LoadModel() 方法如何?你想画什么,程序实际画什么?您的整个 Game-Class 看起来如何?
-
此外,创建单独的类来加载、绘制和更新您想要绘制的不同模型/形状的逻辑可能是一个好主意。
标签: c# visual-studio-2010 xna xna-4.0