21

我想学习为 Windows 7 / 桌面制作简单的 3D 应用程序。我的意思是在 3D 空间中移动的球体、三角形或像素。到目前为止,它不必非常复杂。为此,我想将 C# 语言与 .NET 一起使用(Java/C++ 是我的第二要务)。

我知道这在互联网上已经被问过很多次了,但我觉得很多问题都已经过时了,很多 API 被弃用了,教程也太旧了。

我正在考虑学习 XNA,但后来我了解到微软不打算再开发和支持它了。SharpDX 似乎也是一个不错的选择,但这似乎是针对 Windows Store 和 Phone 应用程序的。

在 Internet 上查找时,Managed DirectX 似乎正是我正在寻找的东西(语法、复杂性),但同样,这对我来说太不推荐使用了。

您能否指导我应该学习什么来创建简单而可靠的 3D 应用程序?

4

3 回答 3

8

看看SlimDX。它是 DirectX (DirectX 11) 的开源、免费、托管库。每个版本都与 DirectX 版本同时发布,因此大多数时候它都是最新的。我已经使用了它,并且很容易上手。这里(向下滚动)是与您提到的其他可能性的比较。

于 2013-02-20T19:06:07.843 回答
6

最简单的可能是使用 WPF 3D。这是一个保留模式的图形系统,所以如果你没有很大的需求(即:特效着色器等),它很容易设置和直接使用。

否则,更精细的 3D 系统(例如 XNA)可能更合适。这将是更多的设置工作,但会给你更多的控制权。

  1. 教程 1:在屏幕上显示 3D 模型
  2. WPF
  3. XNA
于 2013-02-20T19:04:09.577 回答
5

在 OpenGL 世界中,我一直在使用OpenTK。我必须在现有代码的基础上构建,C#才能显示没有阴影和逼真效果的平面几何对象。

这是一个例子:

使成为

从代码生成:

void InitModels()
{
    Scene.CoordinateSystem cs1 = new Scene.CoordinateSystem(world.Ground)
    {
        DrawSize = 1,
        Visible = false
    };
    Scene.CoordinateSystem cs2 = new Scene.CoordinateSystem(world.Ground, 0.6 * vec3.J)
    {
        DrawSize = 0.5,
        Orientation = rot3.RotateXDegrees(-15)
    };
    Scene.Cube cube = new Scene.Cube(cs1)
    {
        CubeSize = 0.5
    };
    cs2.AddPoint(new point3(vec3.O,1), Color.Firebrick, 15);
    var line = cs2.AddLine(new line3(-vec3.I, vec3.I), 20, Color.SlateGray, 2);
    line.SetPattern(0xFF0F, GeometryTest.Scene.Stripple.Scale2);

    cube.BindTexture(5, GeometryTest.Properties.Resources.julia, true);
    cube.AddText(3, "OpenTK 1.0", Color.DarkMagenta, 0.5f, 0.5f, 1.0f);

}
于 2013-02-20T19:32:38.267 回答