如何将事件附加到在gtk绘图区域中使用OpenGL绘制的立方体?

0 gtk opengl

我在gtk绘图区域小部件中使用OpenGL绘制一个立方体.现在我想将"clicked"等事件附加到多维数据集,以便可以选择拖放等等.我该怎么办?

dat*_*olf 5

OpenGL不是一个场景图(*gah*我已经累了,再次写这个,再一次,再次).它吸引人的东西.你在3D空间给它一堆三角形,并将它们投影到2D,根据你的愿望绘制它们,然后忘记它.

绘制完立方体之后,OpenGL中不再有任何可以将其识别为连贯结构的东西.这完全取决于你自己.

你要做的是:

  • 保持您绘制的场景的表示
  • 在GTK GL区域安装鼠标事件处理程序
  • 使用鼠标事件将指针坐标转换回场景坐标.基本上你将"拍摄"光线进入场景并测试它们击中的位置.幸运的是,测试光线 - 立方体交叉点是微不足道的.你可以通过使用射线边界球测试首先测试光线是否接近,来加快速度.

要关键的是"OpenGL对象选择"


这样就可以选择它进行拖放

顺便说一句:你不能只是在OpenGL中拖动"对象",因为它不知道几何结构意义上的"对象".OpenGL指定对象,但这些对象实际上是抽象的数据源,如顶点和索引数据的纹理或缓冲区.什么都不会成为一个可操纵的场景.

如果你在场景中改变某些东西,使用OpenGL你必须完全重绘它.