• 全部
  • 问答

求助CAD开发图元多了为何会卡?有没有提高绘制图元的办法?采用OpenGL引擎!有两个帖子,可以一起结贴!

Angus_pei 2013-05-10 10:56:06
求各位大神,这已经是第二个帖子了

有这样的现象,在一张图纸上图元多了,就会很卡

有没有解决绘制效率的问题?

OpenGL中有没有牛叉的技术不用绘制 就搞定的?

另外OpenGL有移动视口调整屏幕显示内容的方法,是否会一样要对每个图元进行绘制一次到后台缓存啊?

...全文
1060 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhao1zhong6 2013-12-05

闷了两个月,dxf格式搞的一塌糊涂。
回复
zhao1zhong6 2013-12-05
回复楼上的,你这图形还是太少,绘制10万条直线再试试。cad动辄几万个图元都是很正常的。 不过图形还是次要的,绘制文本才是最头疼的。
回复
ZHANGKAN 2013-11-29

自己用MFC+GDI写的矢量图工具。不太卡
回复
ZHANGKAN 2013-11-29
CAD好像用GDI+
回复
ZHANGKAN 2013-11-29

牛叉技术
回复
goshawk1986 2013-11-27
windows mobile版本我是对屏幕图片进行缩放平移,当操作完成后重绘,这个重绘实在是太卡了
回复
goshawk1986 2013-11-27
楼主你好,我现在也在做这方面的软件,在电脑上实现缩放平移都是重绘全图,使用了双缓冲,图大的时候也卡。我另外做了个安卓版的,打开一个比较大的DXF图形,缩放平移都很卡,还做了个windows mobile版本的,更卡了。绘图时的对象捕捉需要遍历全部图元,也不知道有什么好的方法。也想知道CAD是什么实现机制。
回复
Angus_pei 2013-11-08
引用 4 楼 happy__888 的回复:
通过离屏渲染技术, 是有可能优化的 思路如下: 利用离屏渲染技术创建一个比窗口大上比如说4倍的表面, 把图元一次性渲染到这个表面上,形成一个大图片。 然后对图纸的放大缩小以及平移操作,就变成了对这个超大图片的简单缩放和移动察看了 只有当图元的内容发生变化的时候才重新渲染这个大图片 当图纸放大超过大图片的精度的时候,重新生成更高精度的大图片的时候,需要再次渲染 就相当于你有了一个最详细的地图(超大),然后对这个超大的地图来缩放和移动察看 针对这个超大的地图,也可以作出lod来 这个方法适合图元的内容变化不频繁,因为这个超大图生成的速度必然是慢的 当然,你也可以再次优化,如果图元只是部分内容变化,你只重新渲染超大图的局部
你这样是可以实现的,我已解决平移的性能问题了,正在解决图形缩放的问题
回复
max_min_ 2013-09-08
引用 7 楼 Angus_pei 的回复:
[quote=引用 4 楼 happy__888 的回复:] 通过离屏渲染技术, 是有可能优化的 思路如下: 利用离屏渲染技术创建一个比窗口大上比如说4倍的表面, 把图元一次性渲染到这个表面上,形成一个大图片。 然后对图纸的放大缩小以及平移操作,就变成了对这个超大图片的简单缩放和移动察看了 只有当图元的内容发生变化的时候才重新渲染这个大图片 当图纸放大超过大图片的精度的时候,重新生成更高精度的大图片的时候,需要再次渲染 就相当于你有了一个最详细的地图(超大),然后对这个超大的地图来缩放和移动察看 针对这个超大的地图,也可以作出lod来 这个方法适合图元的内容变化不频繁,因为这个超大图生成的速度必然是慢的 当然,你也可以再次优化,如果图元只是部分内容变化,你只重新渲染超大图的局部
求详细思路啊[/quote] 针对你一楼的问题 1 这个你代码优化吧,算法问题 2 这个也只是一个开源库而已,那有这么牛叉, 一切到底还是需要自己设计流程和框架,算法的! 3 没有!
回复
Angus_pei 2013-09-06
引用 4 楼 happy__888 的回复:
通过离屏渲染技术, 是有可能优化的 思路如下: 利用离屏渲染技术创建一个比窗口大上比如说4倍的表面, 把图元一次性渲染到这个表面上,形成一个大图片。 然后对图纸的放大缩小以及平移操作,就变成了对这个超大图片的简单缩放和移动察看了 只有当图元的内容发生变化的时候才重新渲染这个大图片 当图纸放大超过大图片的精度的时候,重新生成更高精度的大图片的时候,需要再次渲染 就相当于你有了一个最详细的地图(超大),然后对这个超大的地图来缩放和移动察看 针对这个超大的地图,也可以作出lod来 这个方法适合图元的内容变化不频繁,因为这个超大图生成的速度必然是慢的 当然,你也可以再次优化,如果图元只是部分内容变化,你只重新渲染超大图的局部
求详细思路啊
回复
Angus_pei 2013-06-08
插入数据,这又如何处理?难道在一张图片上做这些操作吗? 可能我需要研究一下这种技术,你那里有一些实现的例子代码吗?方便的话可以发我邮箱一下啦、 jingpei1987@gmail.com
回复
Angus_pei 2013-06-08
happy__888
你这种技术,我们都有想到过
如果作为一张图片,那么矢量化如何处理?
甚至说,选中的时候,有假线将图片中的一块元素表述出来,那么这又如何处理呢?
回复
寻开心 2013-06-04
通过离屏渲染技术, 是有可能优化的 思路如下: 利用离屏渲染技术创建一个比窗口大上比如说4倍的表面, 把图元一次性渲染到这个表面上,形成一个大图片。 然后对图纸的放大缩小以及平移操作,就变成了对这个超大图片的简单缩放和移动察看了 只有当图元的内容发生变化的时候才重新渲染这个大图片 当图纸放大超过大图片的精度的时候,重新生成更高精度的大图片的时候,需要再次渲染 就相当于你有了一个最详细的地图(超大),然后对这个超大的地图来缩放和移动察看 针对这个超大的地图,也可以作出lod来 这个方法适合图元的内容变化不频繁,因为这个超大图生成的速度必然是慢的 当然,你也可以再次优化,如果图元只是部分内容变化,你只重新渲染超大图的局部
回复
ri_aje 2013-06-04
引用 2 楼 Angus_pei 的回复:
[quote=引用 1 楼 ri_aje 的回复:] >> 有没有解决绘制效率的问题? 得看你现在程序慢的原因,说说你怎么画的吧。 >> OpenGL中有没有牛叉的技术不用绘制就搞定的? 没有,opengl 是 api,不是神。 >> 另外OpenGL有移动视口调整屏幕显示内容的方法,是否会一样要对每个图元进行绘制一次到后台缓存啊? 这个由窗口子系统决定,它要求刷新,opengl 就会重绘所有图元,除非你自己有额外的逻辑避免这种行为。
你好,对一张图纸进行缩放或平移操作的时候,里面包括了上千个矢量图元 我能避免图元绘制的这个过程,每次都要重新绘制一遍;这也太耗性能 我希望能得到一个可以不用绘制已经显示在屏幕上的图元,并且能达到平移和缩放的操作!! 或者提高绘制的性能办法! 谢谢了[/quote] 缩放估计怎么也得重新绘制。平移的话,有一部分窗口是可以重复利用的。 从 gl 的角度将,提高性能的方法无非就是用 display list,或者更新的显卡支持 vbo 的话,直接放在显卡上就行了。vbo 我有一次试过 1000w 个三角形,也是秒杀,而且显卡还不是最高级的。 从系统的角度讲,平移或放缩的过程中不用重新绘制,等到用户松开鼠标以后再重新绘制就行了,这个一般都是 hack 系统消息,并增加自己的特殊逻辑实现的。
回复
Angus_pei 2013-06-02
引用 1 楼 ri_aje 的回复:
>> 有没有解决绘制效率的问题? 得看你现在程序慢的原因,说说你怎么画的吧。 >> OpenGL中有没有牛叉的技术不用绘制就搞定的? 没有,opengl 是 api,不是神。 >> 另外OpenGL有移动视口调整屏幕显示内容的方法,是否会一样要对每个图元进行绘制一次到后台缓存啊? 这个由窗口子系统决定,它要求刷新,opengl 就会重绘所有图元,除非你自己有额外的逻辑避免这种行为。
你好,对一张图纸进行缩放或平移操作的时候,里面包括了上千个矢量图元 我能避免图元绘制的这个过程,每次都要重新绘制一遍;这也太耗性能 我希望能得到一个可以不用绘制已经显示在屏幕上的图元,并且能达到平移和缩放的操作!! 或者提高绘制的性能办法! 谢谢了
回复
ri_aje 2013-05-11
>> 有没有解决绘制效率的问题? 得看你现在程序慢的原因,说说你怎么画的吧。 >> OpenGL中有没有牛叉的技术不用绘制就搞定的? 没有,opengl 是 api,不是神。 >> 另外OpenGL有移动视口调整屏幕显示内容的方法,是否会一样要对每个图元进行绘制一次到后台缓存啊? 这个由窗口子系统决定,它要求刷新,opengl 就会重绘所有图元,除非你自己有额外的逻辑避免这种行为。
回复
相关推荐
发帖
机器视觉
创建于2007-08-27

3938

社区成员

图形图像/机器视觉
申请成为版主
帖子事件
创建了帖子
2013-05-10 10:56
社区公告
暂无公告