我要用OpenGL做一个实时动画显示的程序,对数据量要求很大,请大家给点意见(高分)

arethe 2007-10-26 08:15:46
我的程序要实时采点,实时绘制,要求画面连贯。数据量非常大,一般来讲,点数有7、8M之多。
程序运行的环境配置很低,接近于嵌入式机器,没有图形加速卡。
我试过每采一个点立即刷新的方法绘图,但是很慢,画面一顿一顿的。
请大家给点意见,有没有比较好的算法,或者给我推荐点资料或图书吧。
谢谢。
...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AliasKavin 2008-06-20
  • 打赏
  • 举报
回复
图形加速卡是比较麻烦的~~~~ CPU计算图形的话速度不会很快~~
wangweintk 2008-06-19
  • 打赏
  • 举报
回复
你的速度取决于2个方面:
(1)采集速度;(2)绘制速度。
你需要先确定主要是什么因素影响了你的最终速度。如果是采集速度太慢,情况允许的话,设缓冲区,不允许的话,减少采集量,或许还有其它办法,那就只有等高人解答了。如果是绘制速度太慢,可以考虑使用列表、减小纹理/光照(如果有的话)等方法进一步优化绘制速度(关于这点,网上有很多贴子,说的很经典,在GOOGLE里搜)。

以上建议,希望有所帮助,祝你成功!
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
lz要干嘛?
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
不明LZ在说什么
aceattacker 2007-10-31
  • 打赏
  • 举报
回复
你这个就有点像传送一次数据(一个点)就要中断一次,有点像设备占用的IRQ。试试对DMA(直接内存访问)总线编程,这样就不用CPU去参与中断处理,数据采集后直接送内存。你就从内存中去取数据。
(理论上是这样的)关于具体的DMA编程,可以去汇编区问问。
arethe 2007-10-26
  • 打赏
  • 举报
回复
因为点是实时产生的,不能一次全部获得,由底层的模块周期性的向上级发送。所以我现在的做法是每来一个点就刷新一次。
你的意思是说,设置一个缓冲区,由底层模块和上层模块共用是吗?采集数据时,直接写入这个缓存区,在OpenGL中直接将这个缓冲区设为OpenGL的缓冲区,是这样吗?
但是我采到的数据不是象素信息,而是空间中点的坐标。我现在使用的画图方式是:
glDrawArray()
但是效果不好。
aceattacker 2007-10-26
  • 打赏
  • 举报
回复
这句我不是很明白“我试过每采一个点立即刷新的方法绘图”,不能一次采所有的点吗(没有一次读入所有数据的函数吗?)?
如果可以全屏采集,用一个指针指向这批像素的头地址,然后用memcpy的方式(或者一行一行拷贝)拷出再刷新。
采集数据时必有一个缓冲区(如摄像头),用指针指向这个缓冲区并刷新就行了啊!

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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