作者:龍的闖人_399_664 | 来源:互联网 | 2023-05-18 14:06
在windowsgdi中可用pDC->SetROP2(XOR_PEN),然后再绘一次即可擦除,但在opengl中如何处理?回复人:Phourm()()信誉:100200
在windows gdi中可用pDC->SetROP2(XOR_PEN),然后再绘一次即可擦除,但在opengl中如何处理?
回复人: Phourm() ( ) 信誉:100 2002-3-26 9:22:10 得分:50
glLogicOp(GL_XOR);
回复人: dycdyc123(微笑江湖) ( ) 信誉:97 2002-3-26 9:24:21 得分:50
glLogicOp(GL_XOR)可以!
有两朋友说用glLogicOp(GL_XOR),但这只能用于颜色索引方式,rgba模式怎么办?
22 个解决方案
但在不想重画时如何擦除?就象autoCAD中的十字光标一样,每一次移动都是先擦除旧的十字线,再在新位置画十字线。(比如重画要耗时3分钟,总不能一动鼠标就让用户等3分钟吧?)
考虑速度问题,如果在模型比较大的时候,还是重绘场景更快一些。我作过一个项目,就是这样处理的,没有速度或其他方面的问题。
有一种方法可以,就是把每种图形封装起来,以后想删除,直接调用封装好的delete函数就可以了!
重绘效率很低吗?没有吧!再说如果不是配置很差的机器,考虑效率有必要吗?
大家有其他办法吗?我的模型很大,几千万个三角形,重画要耗时3分钟,总不能为了擦去一个十字光标就重画这几千万个三角形,一动鼠标就让用户等3分钟吧?
我们是做GIS的,模型更大,也是用OpenGL,但是设计的好还是可以解决的!
实现一个功能可能有多种方法,为什么不多考虑几种,选择最优或可接受的方法呢?况且在不同的环境或应用中,可能采取不同的方法。请大家各出妙招!
分数不是问题!!
有没有搞错喔,你把场景画到一个内存DC里面,然后显示时先显示内存DC再在上面绘你的光标,ok?
显示内存DC不还是要重绘吗!
我也遇到你的这种情况,不过我想一定有办法搞定的!
1)找到一个删除的方法;
2)能否把三角形少画一点而解决问题,这样就可以用重绘;
3)光标用另外的方法输出,不和你画三角形的用同样的方式输出;
我以前也遇到你这种情况,但我的不要画多少,所以用的重绘!要我那时候搞懂了现在就可以吹了!:(
To kevin_qing: 场景不是静态的,从开始绘到结束要3分钟,在绘的过程中,
要求可以移动横贯场景的十字光标,所以不能如你所说:
把场景画到一个内存DC里面,然后显示时先显示内存DC再在上面绘你的光标。
有何法子?请大家各出妙招!
几千万个三角形,双缓冲,每画10个三角形交换缓冲显示出来,(在画的过程中,要可以移动横贯场景的十字光标,所以模仿gdi中pDC->SetROP2(XOR_PEN),然后再绘一次即可擦除成为关键。)
没有用显示列表。
不用全部画的,就是设成 XOR_PEN 再在你原来的地方画一次,不就没了,。再设回来。再在你新的地方设一次不就可以了吗!
glLogicOp(GL_XOR),但这只能用于颜色索引方式,rgba模式怎么办?
To Robin_Hood_POT(令狐冲)
有一种方法可以,就是把每种图形封装起来,以后想删除,直接调用封装
好的delete函数就可以了!
请问有这种函数吗?