OpenGL MFC绘制图形

chnyjw1989 2013-10-10 10:32:36
绘制的图形数据比较大:约1000万个点
在OnDraw或OnPait中绘制图形,每次刷新时OpenGL生成图形的过程时间比较长;而且是重绘一次对应要生成一次图形。对于我来说:OpenGL使用的原始数据是不变的,绘制图形只是:取数据->OpenGL生成图形。
有没有可能:
1.在整个程序中,OpenGL的绘制图形只执行一次,也就是绘制图形作为初始化一部分,不放在OnDraw中。
2.在旋转,平移等操作中,通过观察视角的转换,直接从OpenGL的缓冲区中通过重新投影绘制新的显示图形,因为3D数据生成,重新改变显示方式,就可能有新的图形效果。
路过的指点迷津......
见过相关代码,也请发个链接......
拜谢.
...全文
363 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
barbara2008 2013-10-11
  • 打赏
  • 举报
回复
交给shader去做
victor_woo 2013-10-11
  • 打赏
  • 举报
回复
OpenGL 你只需要用点-线-三角片-四边形等基本元素构造你的显示对象, 变换观察视角(旋转、平移、缩放)只是设置/改变状态变量,至于后面的处理,计算,显示你就不用关心了
victor_woo 2013-10-11
  • 打赏
  • 举报
回复
引用 楼主 chnyjw1989 的回复:
绘制的图形数据比较大:约1000万个点 在OnDraw或OnPait中绘制图形,每次刷新时OpenGL生成图形的过程时间比较长;而且是重绘一次对应要生成一次图形。对于我来说:OpenGL使用的原始数据是不变的,绘制图形只是:取数据->OpenGL生成图形。 有没有可能: 1.在整个程序中,OpenGL的绘制图形只执行一次,也就是绘制图形作为初始化一部分,不放在OnDraw中。 2.在旋转,平移等操作中,通过观察视角的转换,直接从OpenGL的缓冲区中通过重新投影绘制新的显示图形,因为3D数据生成,重新改变显示方式,就可能有新的图形效果。 路过的指点迷津...... 见过相关代码,也请发个链接...... 拜谢.
试过DisplayList没有? 1000万个点 必须要全部显示出来么? 如果仅用于肉眼观察,是否有必要 1.在整个程序中,OpenGL的绘制图形只执行一次,也就是绘制图形作为初始化一部分,不放在OnDraw中。 显示列表就是干这个的 2.在旋转,平移等操作中,通过观察视角的转换,直接从OpenGL的缓冲区中通过重新投影绘制新的显示图形,因为3D数据生成,重新改变显示方式,就可能有新的图形效果。 ------在OpenGL里面你不需要考虑这些
u010982710 2013-10-10
  • 打赏
  • 举报
回复
连接:www.vcshu.net
wshcdr 2013-10-10
  • 打赏
  • 举报
回复
那你很难了, 除非机器性能强大
chnyjw1989 2013-10-10
  • 打赏
  • 举报
回复
实际上不允许使用滚动视图的,最终效果:一次显示整个3D视图,包括3D图之外的空白空间都要显示出来。
目前:我可以降采样数据来减少生成的数据量达到相似的效果,但是不可取的方式。没有解决OpenGL时如何及时显示大量数据的图形效果。
wshcdr 2013-10-10
  • 打赏
  • 举报
回复
你的主要问题还是数据量太大, 可行的做法比如把整个数据放在一个scrollview中,那每次就绘制几万个点,不要全部去重绘

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧