2013-02-20 89 views
15

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

我知道这已经在互联网上多次提出过,但我觉得很多问题已经过时,许多API已经过时,而且教程太旧了。

我正在考虑学习XNA,但后来我学到了Microsoft does not plan to develop and support it anymore. SharpDX似乎也是一个很好的选择,但这似乎是针对Windows应用商店和手机应用的。

在互联网上查看时,托管DirectX看起来正是我所期待的(语法,复杂度),但同样,也不赞成供我使用。

你能指导我学什么创建简单而坚实的3D应用程序吗?

+2

看[OpenTK](http://www.opentk.com/)和[renderstack] (http://neure.ath.cx/renderstack_new)它不是DirectX,而是OpenGL。 – ja72 2013-02-20 19:02:35

+0

#Ja75 感谢您的评论。我看了OpenTK,但它让我担心一点。似乎自2010年以来没有任何更新,并且与更新版本的VS存在一些兼容性问题。 – Janman 2013-02-20 19:06:24

+1

2010年发布的版本有点旧,但SVN中继是稳定的。我一直在使用它一段时间没有问题。如果你想要一些更先进的功能,那么OpenTK的原始维护者一直忙于我们中的一些人贡献了一些[在GitHub上的OpenTK分支](https://github.com/andykorth/opentk)过去一段时间的生活。 – 2013-02-20 19:10:46

回答

8

看看SlimDX。它是DirectX(DirectX 11)的开源免费管理库。每个版本都与DirectX版本一致,所以大部分时间都是相当新的。我已经使用它,并且很容易上手。 Here (scroll down)是一个与您提到的其他可能性的比较。

+0

中明确指出的你好! 这看起来很像我正在寻找的东西。如果这有帮助,我会深入研究并报告几天。 非常感谢! – Janman 2013-02-20 19:24:38

5

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

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

  1. Tutorial 1: Displaying a 3D Model on the Screen
  2. WPF
  3. XNA
4

在OpenGL世界中,我一直在使用OpenTK。我不得不使用C#的现有代码来构建平面几何对象,而无需阴影和逼真效果。

下面是一个例子:

render

从代码生成:

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); 

} 
+1

请参阅[假期通知](https://github.com/opentk/opentk/commit/2e51fe019771f4c70b15bb25b3a560f712a45fbf):看起来项目所有者不在身边,所以项目不会再更新。 – kiamlaluno 2017-10-18 07:12:06