基于.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是一款非常有 ...
随机推荐
- mysql 内存统计
在 mysql 5.5 中实现了类似mysql5.7中performance schema 的内存统计功能. 功能 1 展示mysql层内存总大小. 2 展示mysql层内存使用分布情况. 3 展示每 ...
- mongodb的搭建
1, vi /etc/yum.repos.d/mongodb-org-3.2.repo 2, 添加如下内容 [mongodb-org-3.2] name=MongoDB Repo ...
- git常用命令图
- python基础学习19----socket网络编程
网络通信三要素 ip地址:InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号:用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议:通讯的规 ...
- Qt在控件未显示时如何获取正确的控件尺寸
因为打算全屏显示一个对话框,而对话框内有几个QLabel的尺寸要在确定QLabel可用的最大尺寸后,再根据内容调整一次,所以在对话框构造函数内就想确定QLabel的最大尺寸,但因为QWidget::u ...
- LVM卷的创建及案例演示
LVM:Logical Volume Manager, Version:2dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块. /dev/dm-# 这里的#表示数字,代 ...
- 卸载CocoaPods
1. 移除pod组件 这条指令会告诉你Cocoapods组件装在哪里 : $ which pod 你可以手动移除这个组件 : $ sudo rm -rf <path> 2.移除 RubyG ...
- 小渣渣的json和jsonp和ajax的实质和区别
json和jsonp和ajax的实质和区别ajax的两个问题 1.ajax以何种格式来交换数据 2.跨域的需求如何解决 数据跨域用自定义字符串或者用XML来描述 跨域可以用服务器代理来解决jsonp来 ...
- 【Alpha 冲刺】 10/12
今日任务总结 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 完成app端api编写 未完成 Json格式出了点问题,修复中 孙浩楷 图片在线编辑器插件引入 未完成 耦合了,结果另外一个那边做 ...
- WMS - resource info
Description This sample shows how to work with an OGC Web Map Service (WMS). When WMSLayers are adde ...