buf

BE something YOU love and understand
posts - 94, comments - 35, trackbacks - 0, articles - 2
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

vega prime basics - 注册事件通知

Posted on 2012-03-15 19:42 buf 阅读(410) 评论(0)  编辑 收藏 引用 所属分类: Graphics
vega prime / vsg采用了Observer模式实现事件通知机制,以下是一个简单的例子:
#include <vsgu.h>
#include <vp.h>
#include <vpApp.h>
#include "vuAllocTracer.h"
vuAllocTracer tracer(true, true);

class EventViewer : public vpKernel::Subscriber
{
public:
    ~EventViewer() {}

    void notify(vpKernel::Event evt, const vpKernel*)
    {
        if (evt == vpKernel::EVENT_ON_FIRST_FRAME)
        {
            printf("got first frame event from kernel\n");
        }
    }
};

int main(int argc, char *argv[])
{
    // initialize vega prime
    vp::initialize(argc, argv);

    // initialize addition modules here
    //vpModule::initializeModule(modulename);

    // create a vpApp instance
    vpApp *app = new vpApp;

    EventViewer viewer;
    app->getKernel()->addSubscriber(vpKernel::Event::EVENT_ON_FIRST_FRAME, &viewer);

    // load acf file
    if (argc <= 1)
        app->define("vp_simple.acf");
    else
        app->define(argv[1]);
        
    // configure my app
    app->configure();

    // runtime loop
    app->run();
    
    // unref my app instance
    app->unref();
    
    // shutdown vega prime
    vp::shutdown();

    return 0;
}
只有注册用户登录后才能发表评论。