• 40278阅读
  • 83回复

Qt+OpenGL做的蕾达显示程序[含源代码] [复制链接]

上一主题 下一主题
离线orafy
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-26
— 本帖被 XChinux 执行加亮操作(2016-04-04) —
用途:
工作中辅助终端调试的。


特点:
  1. 插件架构:类似于Qt Creator。
  2. 采用OpenGL的FBO和顶点、片段着色器特性实现了雷达余晖效果,PPI视图可以实现每秒渲染数十万点,不到3% cpu占用率。
  3. 基于Qt5与Qt3D,使用QGraphicsItem包装OpenGL绘制的图元,与2D的文字,坐标轴放到一个graphics scene。
  4. model/view的性能优化:model记录更改,每隔一段时间通知view。


截图:




代码:
daviz.zip (302 K) 下载次数:3136

比较有趣与大家分享。



5条评分好评度+1贡献值+1金钱+15威望+1
巫添良 好评度 +1 - 03-16
巫添良 贡献值 +1 - 03-16
巫添良 威望 +1 - 03-16
巫添良 金钱 +10 - 03-16
gavin_8724 金钱 +5 期盼很久了 2016-01-31
离线xairwolfcn

只看该作者 1楼 发表于: 2012-10-27
OASIS
离线liyoujun

只看该作者 2楼 发表于: 2012-10-29
大神亲,您的源码,我在xp+qtcreat2.5+lib4.8.2编译不过去啊,求环境配置方面的指导。
qq:312413505
离线liyoujun

只看该作者 3楼 发表于: 2012-10-29
“setSectionResizeMode”: 不是“QHeaderView”的成员

搞不定啊。
离线orafy

只看该作者 4楼 发表于: 2012-10-29
需要Qt5。。。
离线liyoujun

只看该作者 5楼 发表于: 2012-10-31
回 4楼(orafy) 的帖子
亲,,,您这里用了很多新特性?
那是不是资料只能来源于自带的英文文档了?
我买的两本书,都算作报废了.............
离线liyoujun

只看该作者 6楼 发表于: 2012-10-31
回 4楼(orafy) 的帖子
大神亲,qt5的编译,或者说安装,有没有什么帮助文档一类的东西,或者别人写的帖子,总结的过程?
离线liyoujun

只看该作者 7楼 发表于: 2012-11-01
亲,那里边的qtbase编译成功了,然后,再编译你的这个程序,提示qt3d怎么回事来着。
这里,我有心理准备,也有了疑问。
就是,我重新configer  Qt5以后,再把qt3d那个模块编译了,要怎么着,qtcreat才能知道他的存在?
离线liyoujun

只看该作者 8楼 发表于: 2012-11-01

亲,这个怎么搞,应该编译哪一个?怎样做,可以一次都编译完?
我现在是confger一次,编译一个组件,3d的错不再报了,这个错怎么解决?
离线liyoujun

只看该作者 9楼 发表于: 2012-11-02
亲们,谁搞定了?
离线wzg_j

只看该作者 10楼 发表于: 2012-11-05
感谢前辈分享~
离线yangbajing
只看该作者 11楼 发表于: 2012-11-27
楼主强大,现正在尝试着用Qt 5做一个软件。
离线yijavakevin

只看该作者 12楼 发表于: 2012-11-30
Qt5???
离线xlttap

只看该作者 13楼 发表于: 2012-11-30
can not download
我简单我快乐
离线xlttap

只看该作者 14楼 发表于: 2012-11-30
下载后怎么是jop.php文件?
我简单我快乐
离线o7ouro

只看该作者 15楼 发表于: 2012-12-06
这个厉害啊, 后面试试看看。
离线计划

只看该作者 16楼 发表于: 2012-12-06
谢谢分享!
好好学习,天天向上。
离线zheguzai

只看该作者 17楼 发表于: 2012-12-10
太牛了都Qt5了
离线activeion
只看该作者 18楼 发表于: 2013-01-04
NB, 编译不通过, 没有那个啥3D,默认安装qt for msvc2010
离线liuyuanan

只看该作者 19楼 发表于: 2013-01-08
回 楼主(orafy) 的帖子
好东西,顶楼主!!!!  
离线zhanglyl

只看该作者 20楼 发表于: 2013-01-14
\daviz\plugins\ppiview\ppiglviewportitem.cpp:67: 错误:C3861: “glPointSize”: 找不到标识符
离线yeguoxiong

只看该作者 21楼 发表于: 2013-03-29
回 楼主(orafy) 的帖子
请问,你QT5下怎么编译qt3d的?
离线mutse

只看该作者 22楼 发表于: 2013-03-30
在ubuntu 12.04.2下编译ok,倒是不见楼主的截图画面,是不是因为缺少qsradar插件?谢谢!
离线mutse

只看该作者 23楼 发表于: 2013-03-30
回 21楼(yeguoxiong) 的帖子
将qt3d源码放在qt5源码目录下,先编译Qt5,再编译qt3d。Ubuntu Linux下编译Qt5详见我博客
离线yeguoxiong

只看该作者 24楼 发表于: 2013-03-30
Re:回 21楼(yeguoxiong) 的帖子
引用第23楼mutse于2013-03-30 18:10发表的 回 21楼(yeguoxiong) 的帖子 :
将qt3d源码放在qt5源码目录下,先编译Qt5,再编译qt3d。Ubuntu Linux下编译Qt5详见我博客  

Thanks,明白你的意思了。
离线liudianwu

只看该作者 25楼 发表于: 2013-04-05
QT4.7.0没有编译通过
专业各种自定义控件编写+UI定制+输入法定制+视频监控+工业控制+仪器仪表+嵌入式linux+各种串口网络通信,童叟无欺,量大从优,欢迎咨询购买定制!你正好需要,我正好专业!QQ:517216493 微信:feiyangqingyun Email:feiyangqingyun@163.com
群号:853086607(Qt交流大会,雨田哥群,不定期上传作品,解答作品中相关问题!) 312125701(QtQML多多指教群) 46679801(Qt开发技术交流群-5000人大群)
离线yeguoxiong

只看该作者 26楼 发表于: 2013-04-17
1、在qt-project.org上下载Qt 5.0.2。
2、安装QT5.0.2
3、下载一个PortableGit工具,用于下载QT3D
4、在PortableGit目录下打开git-bash.bat
5、git clone git://gitorious.org/qt/qt3d.git qt3d 下载QT3D
6、下载Perl,不然编译QT3D缺少perl.exe。
7、下载地址http://strawberry-perl.googlecode.com/files/strawberry-perl-5.16.3.1-64bit.msi
8、 将QT3D放入无中文件的目录中。
9、打开QT命令窗口,进入QT3D目录。
10、设置环境变量,在命令窗口中输入set PATH=C:\Qt\Strawberry\perl\bin;C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin;C:\Qt\Qt5.0.2\Tools\MinGW\bin
11、qmake qt3d.pro
12、mingw32-make(QT5没有make命令,如果需要,自己可以加)
13、mingw32-make install
离线cao542190156

只看该作者 27楼 发表于: 2013-04-18
楼主能把做的大体思路说一下吗,求教
离线yeguoxiong

只看该作者 28楼 发表于: 2013-04-24
引用第4楼orafy于2012-10-29 23:36发表的  :
需要Qt5。。。

雷达余晖效果这部分代码是不是去掉了?
离线orafy

只看该作者 29楼 发表于: 2013-04-25
额,实现PPI余晖是采用片断着色器,就在 plugins/ppiview/ppieffect.frag
  1. uniform sampler2D qt_Texture0;
  2. varying vec4 qt_TexCoord0;
  3. uniform float specialSector;
  4. uniform float cycle;
  5. uniform float decayFactor;
  6. uniform float antennaPosition;
  7. varying vec4 vertexPosition;
  8. uniform mat4 qt_ModelViewProjectionMatrix;
  9. uniform vec2 coordCenter;
  10. void main(void)
  11. {
  12.     float angle;
  13.     float diff;
  14.     float r;
  15.     vec2 pos;
  16.     pos.x =  qt_TexCoord0.s * 2.0 - 1.0;
  17.     pos.y = -qt_TexCoord0.t * 2.0 + 1.0;
  18.     pos -= coordCenter;
  19.     r = sqrt(pos.x*pos.x + pos.y * pos.y);
  20.     if (pos.x >= 0.0) {
  21.         if (pos.y > 0.0)
  22.             angle = degrees(asin(pos.x/r));
  23.         else
  24.             angle = 180.0 - degrees(asin(pos.x/r));
  25.     } else {
  26.         if (pos.y > 0.0)
  27.             angle = 360.0 - degrees(asin(-pos.x/r));
  28.         else
  29.             angle = 180.0 + degrees(asin(-pos.x/r));
  30.     }
  31.     if (angle <= antennaPosition)
  32.         diff = antennaPosition-angle;
  33.     else
  34.         diff = 360.0-(angle-antennaPosition);
  35.     if (specialSector * 30.0 <= angle && angle < (specialSector + 1.0) * 30.0 && diff > 180.0)
  36.         diff -= 360.0;
  37.     diff += cycle * 360.0;
  38.     vec4 color = texture2D(qt_Texture0, qt_TexCoord0.st);
  39.     float mixed = 1.0 - 4.0 * exp(-diff/decayFactor);
  40.     if (mixed < 0.0)
  41.         mixed = 0.0;
  42.     gl_FragColor = mix(color, vec4(0.0,0.0,0.0,0.0), mixed);
  43. }


离线atspace

只看该作者 30楼 发表于: 2013-04-28
非常感谢分享资源!
离线worthin
只看该作者 31楼 发表于: 2013-04-28
感谢大神分享!!向您看齐!!
离线neil-wen

只看该作者 32楼 发表于: 2013-05-03
不错  不错
离线yliuman
只看该作者 33楼 发表于: 2013-05-07
我使用了VS2010+Qt5.02,编译通过,但运行出错,调试截图如下:请指点,谢谢!
离线yliuman
只看该作者 34楼 发表于: 2013-05-07
对了,我在编译时,把void EViewportItem::paintGL()中下面一行glPointSize(2);注释了,不然编译器说没定义的函数。
//glPointSize(2);
离线hunkguo
只看该作者 35楼 发表于: 2013-07-27
顶,这个比较好玩,谢谢分享
离线simplelife
只看该作者 36楼 发表于: 2013-08-09
这个有意思..
离线神奇物种

只看该作者 37楼 发表于: 2013-08-11
观摩
离线neil-wen

只看该作者 38楼 发表于: 2013-08-15
谢谢 分享
离线shengma

只看该作者 39楼 发表于: 2013-11-24
下载了qt3d,怎么才能在vs2012下编译通过呢。
快速回复
限100 字节
 
上一个 下一个