回到白天很容易; 你制作了自己的3D东西,然后是DirectX,然后是OpenGL.对于.Net开发人员来说MDX很不错.然后XNA接管了MDX,但它不一样.XNA似乎非常以游戏为中心,包含固定模型和内容的所有内容流水线和预加载.
那么我们现在站在哪里?经过几天的研究/试验和错误,我觉得无处不在,我发现半开发的库,库有开销,严重的限制或过于复杂的库.
我想做"自由手"的3D东西.例如,在3D屏幕上显示200k点,并以30fps(Kinect深度图像)移动它们.我想制作3D屏幕保护程序,音频分析插件等.所有这些都不是内容管道的预制件,而且需要高性能.而且(嗯)我想从.Net那里做.
任何人都有图书馆的经验,这些图书馆既简单易懂又能提供相当大的自由和速度?
Ted*_*sen 13
我似乎登陆了OpenTK.我认为它可以或多或少地直接访问OpenGL API,并且不需要加载依赖项.
它比较容易理解.它需要很少(并且可以理解)代码行才能开始.它不能保存对象,所以我可以自由地为每个传递更改任何内容,这很好,因为我主要使用不安全的指针来记忆.
当然很难将速度与易用性结合起来.速度需要直接与3D API对话,同时易于使用需要抽象.因此,这必须被认为是比我尝试的其他一些API更低级别的API.如果我想做一些预制角色动画,那么XNA可能是一个更好的选择,但对于我的使用(如上所述),这似乎非常有希望到目前为止(4-5小时的黑客攻击).
一些示例代码:
private void Render()
{
// Every frame
GL.MatrixMode(MatrixMode.Modelview);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.LoadMatrix(ref cameraMatrix);
GL.Begin(BeginMode.Points);
// Here I can add lots of points. I add 200k without any big problem.
// It seems these points could have been passed in as an array pointer too,
// but I'll look at that later.
GL.Vertex3(x2, y2, z2);
GL.End();
glControl.SwapBuffers();
}
Run Code Online (Sandbox Code Playgroud)
如果你喜欢MDX,SlimDX应该就在你的小巷里.它基本上是MDX的替代品,但是修复了许多有问题的设计决策,并且包含了更多功能.使用MDX时,您会发现SlimDX中存在某种形式.