我想学习为Windows 7 /桌面制作简单的3D应用程序。就此而言,我指的是在3D空间中移动的球体,三角形或像素。它还不一定非常复杂。 为此,我想在.NET中使用C#语言(Java / C ++是我的第二优先)。
我知道互联网已经多次询问过这个问题,但我觉得很多问题已经过时,很多API都已弃用,教程太旧了。
我正在考虑学习XNA,但后来我了解到Microsoft does not plan to develop and support it anymore. SharpDX似乎也是一个很好的方法,但这似乎是针对Windows应用商店和手机应用。
在互联网上查看时,Managed DirectX看起来正是我所寻找的(语法,复杂性),但同样,过于弃用供我使用。
请您指导我应该学习什么来创建简单而可靠的3D应用程序?
答案 0 :(得分:8)
看看SlimDX。它是DirectX(DirectX 11)的开源免费托管库。每个版本都与DirectX版本一致,因此大部分时间它都是最新版本。我已经习惯了它,很容易上手。 Here (scroll down)与您提到的其他可能性进行了比较。
答案 1 :(得分:5)
最简单的可能就是使用WPF 3D。这是一个保留模式的图形系统,所以如果你没有巨大的需求(即:效果的特殊着色器等),它很容易直接设置和使用。
否则,更精细的3D系统(如XNA)可能更合适。这将是更多的设置工作,但给你更多的控制。
答案 2 :(得分:4)
在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);
}