2013-02-20 111 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