绘制的图形数据比较大:约1000万个点
在OnDraw或OnPait中绘制图形,每次刷新时OpenGL生成图形的过程时间比较长;而且是重绘一次对应要生成一次图形。对于我来说:OpenGL使用的原始数据是不变的,绘制图形只是:取数据->OpenGL生成图形。
有没有可能:
1.在整个程序中,OpenGL的绘制图形只执行一次,也就是绘制图形作为初始化一部分,不放在OnDraw中。
2.在旋转,平移等操作中,通过观察视角的转换,直接从OpenGL的缓冲区中通过重新投影绘制新的显示图形,因为3D数据生成,重新改变显示方式,就可能有新的图形效果。
路过的指点迷津......
见过相关代码,也请发个链接......
拜谢.openglmfc图形3d

解决方案 »

  1.   

    你的主要问题还是数据量太大,  可行的做法比如把整个数据放在一个scrollview中,那每次就绘制几万个点,不要全部去重绘
      

  2.   

    实际上不允许使用滚动视图的,最终效果:一次显示整个3D视图,包括3D图之外的空白空间都要显示出来。
    目前:我可以降采样数据来减少生成的数据量达到相似的效果,但是不可取的方式。没有解决OpenGL时如何及时显示大量数据的图形效果。
      

  3.   


    试过DisplayList没有?1000万个点 必须要全部显示出来么? 如果仅用于肉眼观察,是否有必要1.在整个程序中,OpenGL的绘制图形只执行一次,也就是绘制图形作为初始化一部分,不放在OnDraw中。   显示列表就是干这个的2.在旋转,平移等操作中,通过观察视角的转换,直接从OpenGL的缓冲区中通过重新投影绘制新的显示图形,因为3D数据生成,重新改变显示方式,就可能有新的图形效果。  ------在OpenGL里面你不需要考虑这些
      

  4.   

    OpenGL 你只需要用点-线-三角片-四边形等基本元素构造你的显示对象, 变换观察视角(旋转、平移、缩放)只是设置/改变状态变量,至于后面的处理,计算,显示你就不用关心了