开发者

OpenGL: Fire event on new geometry creation

开发者 https://www.devze.com 2023-01-08 05:27 出处:网络
In specific I am working in linux environment. This is an opengl application. Upon a calculation of certain geometries, I want to be able to fire an event whenever a new geom开发者_运维技巧etry is cre

In specific I am working in linux environment. This is an opengl application. Upon a calculation of certain geometries, I want to be able to fire an event whenever a new geom开发者_运维技巧etry is created. Is there any .NET equivalent of events in C ??

Thanks, Vishnu


With gnome libraries or gtk+ (which is built on top of it)? You can do it all yourself with function pointers, but this is the only "standard" C library that I've personally used that standardized events and callbacks. There's probably others out there, too.


Events in C are implemented using function callbacks. The linked question has a couple answers that address how to code callbacks.


To translate from .NET land:

An "event" is simply the calling of a function. To make this configurable, you need to give the thing that generates the "event" a function pointer. The function pointer is called, and is the thing that is "done" when the "event" occurs.

A thing to "do" is a function in C and C++.

If you only want to "do" one thing upon an "event". You'd pass in a pointer to your function, which is the thing you want to "do" upon your "event" as a function pointer to the thing that causes the "event." This is called a callback. Other posts have lots of examples on how this works.

If you need to "do" multiple things on an "event", you'll need to use a signal/slot implementation like boost::signal. Or if OpenGL has something similar, I'd use that. In that case, you have multiple callbacks.


Though I can't say I'd really recommend using them, a possible alternative to callbacks would be signals.

You can use signal to say how a particular signal should be handled, and raise to send a particular signal. Note, however, that there are serious restrictions on what you can do in a signal handler. Lots of code isn't really written to deal well with signals, and quite a bit of it assumes that almost any signal implies such a serious problem that continued execution after a signal may be problematic.

0

精彩评论

暂无评论...
验证码 换一张
取 消