基于.NET的3D开发框架/工具比较
- 好久木有写博客了,这么日子以来忙忙碌碌的,也没大有时间潜心学习和梳理。最近刚好接手一个3D显示的活,虽然还没怎么弄明白,但是也看过一些方案,走了一些弯路,经过一些浅显的了解(3D Display这里面水太深),说说我个人的看法吧。
1.目标
项目的主要工作是能够接受从核心模块得来的数据(已经对原始的工程数据进行处理,包括进行坐标转化、归一化等)并将点云数据进行展示,核心是通过C++写的,然后我负责的外围,没有硬性的语言要求。
2.方案
我觉得应该想办法使用C#来实现这个显示展示问题。经过简单的寻找,大体比较靠谱的有这么些:
- XNA/MONOGAME
- Silverlight
- SharpGL/SharpDX/OpenTK
- WPF
首先从本质上来说,3D显示到底层都是调用DirectX或者OpenGL(不考虑软件加速),上面的这些只是对他们包装的层次不同而已。接下来看看应用场景:
XNA/MONOGAME: 提供了一个较完整的渲染管线,操作3D模型很容易,比较适合于3D的游戏的开发,然后还有一点就是我做这个开发的时候,没看见鼠标在哪,难道不支持?值得关注的是,据我所知,XNA不支持WINFORM/WPF控件!(学了一点而已,不深入)
Silverlight:作为一个客户端的程序运行,适用于构建RIA程序(P.S. 虽然小光酱已经不是微软的开发方向了…),核心3D显示功能是基于XNA的,就是继承结构不一样而已,值得一说的是,这个可以实现运用普通的WPF控件实现对3D图形的控制。
SharpGL/SharpDX/OpenTK:这些都是对底层DirectX或者OpenGL的.NET封装,肯定是可以实现所需要的功能的,不过由于是对底层的封装,使用起来较XNA还是有些难度。
WPF:显示是基于DirectX的,内建支持3D功能的展示,操作方式和xna有一些不同,不过支持原生的WPF控件。
3.小结
从上面的简单对比,可以发现,如果有时间的话,通过SharpGL这一类方法会比较适合于从底层开始开发,通过WPF会比较适合于我的应用场景;由于XNA与Silverlight不再受微软力推,最好也暂停一下,观望观望(当然从学习的角度来说,学了就是自己的,融会贯通,不会白学)。
由于最初没有做一个横向的对比,我直接用的XNA进行的开发。结果,手下人折腾了半天,告诉我搞不出来,回头还要重做,耽误了很多时间,以后动手之前还是需要先动脑,应引以为戒。
P.S. 微软的开发者中心http://msdn.microsoft.com/library/windows/desktop/dn614993.aspx上对开发技术做了对比,做graphics-rich程序,微软还是推荐用C++
基于.NET的3D开发框架/工具比较的更多相关文章
- 基于Metronic的Bootstrap开发框架经验总结(18)-- 在代码生成工具Database2Sharp中集成对Bootstrap-table插件的分页及排序支持
在我们开发系统界面,包括Web和Winform的都一样,主要的界面就是列表展示主界面,编辑查看界面,以及一些辅助性的如导入界面,选择界面等,其中列表展示主界面是综合性的数据展示界面,一般往往需要对记录 ...
- 基于Metronic的Bootstrap开发框架经验总结(12)--页面链接收藏夹功能的实现
在一个系统里面,往往有很多菜单项目,每个菜单项对应一个页面,一般用户只需要用到一些常用的功能,如果每次都需要去各个层次的菜单里面去找对应的功能,那确实有点繁琐.特别是在菜单繁多,而客户又对系统整体不熟 ...
- 基于Metronic的Bootstrap开发框架总览
基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理 最近一直很多事情,博客停下来好久没写了,整理下思路,把最近研究的基于Metronic的Bootstrap开发框 ...
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
最近一直很多事情,博客停下来好久没写了,整理下思路,把最近研究的基于Metronic的Bootstrap开发框架进行经验的总结出来和大家分享下,同时也记录自己对Bootstrap开发的学习研究的点点滴 ...
- 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
在前面介绍了一系列的<基于Metronic的Bootstrap开发框架经验总结>的随笔文章,随笔主要是介绍各个知识点的内容,对框架的总体性界面没有很好的阐述,本篇随笔主要介绍这个Boots ...
- 基于SpringBoot搭建应用开发框架(二) —— 登录认证
零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...
- 基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)
本篇继续<基于Metronic的Bootstrap开发框架--工作流模块功能介绍>,继续介绍基于Metronic的Bootstrap开发框架的工作模块功能,介绍工作流模块中相关业务表单的界 ...
- 基于Metronic的Bootstrap开发框架--工作流模块功能介绍
在很早之前的随笔里面,已经介绍了WInform框架中工作流模块的功能,不过由于工作流模块中界面处理部分比较麻烦,一直没有在Bootstrap框架中进行集成,最近由于项目的关系,花了不少精力,把工作流模 ...
- 基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理
在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有 ...
随机推荐
- C# 泛型约束 xxx<T> Where T:约束(一)
泛型约束 代码举例 发现我们游戏的代码中,主程写了很多类似这样的代码: public static T CreateObject<T>(out int objectId) where T ...
- Qt: QAction在QToolBar中快捷键行为注意事项
在QMenuBar中添加快捷键很简单,只要在text的特定字母前加&,如&k按下ALT+k即会触发(QPushButton也是一样).但在QToolBar则不然,需要调action-& ...
- zabbix之运维疑难总结
2.trousers包 zabbix默认情况下要求trousers包的版本是0.3.12版本以上.如果低于这个版本,有可能zabbix-server服务启动不成功.在mysql7.1版本以上可能会使用 ...
- SDN 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- Java中Map根据键值(key)或者值(value)进行排序实现
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...
- 转 10 个 Nginx 的安全提示
Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你 ...
- http-server
http-server是基于node.js的一个简单.零配置的命令行web服务器,可以方便实现跨域资源请求, #全局安装: npm install http-server -g: 全局安装后就可以通过 ...
- 2-4 R语言基础 列表
#列表list > l1 <- list("a",2,10L,3+4i,TRUE) #每个元素没有名字> l1[[1]][1] "a" [[2 ...
- Netty入门(一)环境搭建及使用
一.项目创建 在 Eclipse 中右键,新建->项目->Maven->Maven Project->下一步->选择 quickstart 下一步->设置如图(参数 ...
- 20165318 2017-2018-2《Java程序设计》课程总结
20165318 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:C语言基础调查和java学习展望 预 ...