2010-07-22 62 views
1

具体而言,我在Linux环境中工作。这是一个opengl应用程序。在计算某些几何图形时,我希望能够在创建新几何图形时触发事件。在C中有没有任何.NET等价的事件?OpenGL:创建新几何图形时发生火灾事件

感谢, 毗湿奴

+0

这似乎与OpenGL无关,因为OpenGL本身不提供任何种类的事件机制。考虑重新提出这个问题。 – 2010-07-25 23:15:49

+0

@马尔特克拉森 - 我知道GLUT有事件发生。 http://www.opengl.org/resources/libraries/glut/ – 2010-08-01 21:18:02

+0

@sheepsimulator GLUT是一个独立的用户界面库,不属于OpenGL。 – 2010-08-01 22:12:36

回答

0

活动中C的使用function callbacks实现。链接的问题有几个解决如何编码回调的答案。

+0

我在Linux环境中有本地C应用程序。更具体地说,这是一个OpenGL应用程序。在创建某些输入几何时,我希望能够调用一个事件,而不是显式地调用一个函数。有没有什么类似于.NET中的事件? – 2010-07-22 18:19:32

+1

@de costo - 请在您的实际问题中提供该信息。 – 2010-07-22 18:21:18

+0

我添加了一个链接到我的文章。在另一个问题中的答案描述使用函数指针进行回调(第二个答案是特别相关的)。 – Cogwheel 2010-07-22 18:21:29

0

gnome librariesgtk+(它是建立在它的顶部)?你可以用函数指针自己做所有事情,但这是我唯一使用过的标准化事件和回调的“标准”C库。也可能有其他人。

0

从.NET土地翻译:

“事件”只是调用一个函数。为了使其可配置,您需要将生成“事件”的东西作为函数指针。函数指针被调用,并且当“事件”发生时是“完成”的事物。

“做”的事情是C和C++中的一个功能。

如果您只想在“事件”上“做”一件事情。你会传递一个指向你的函数的指针,这是你想对你的“事件”“做”的东西,作为指向导致“事件”的事物的函数指针。这称为回调。其他职位有很多关于如何工作的例子。

如果您需要“做”多个在“事件”上的事情,您需要使用信号/插槽实施,如boost::signal。或者如果OpenGL有类似的东西,我会用它。在这种情况下,您有多个回调

0

虽然我不能说我真的推荐使用它们,一个可能替代回调将是信号。

您可以使用signal来说明如何处理特定的信号,并使用raise来发送特定的信号。但是,请注意,在信号处理程序中可以执行的操作有严重的限制。很多代码并没有真正写出来处理好信号,它的一大部分假设几乎任何信号都意味着一个严重的问题,即在信号出现问题后继续执行。