Пример #1
0
    //------------------------------------------------------------------------
    void RenderingEngine::drawFrame() {
        assert (mV != NULL && "mV not set before rendering starts!");
        assert (mP != NULL && "mP not set before rendering starts!");
        glDepthMask(GL_TRUE);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        ///////////////////////////////////////////
        // 1. Draw front to back
        while (!mFrontToBack.empty()) {
            mDraw(mFrontToBack.top().renderingPackage, *mV, *mP);
            mFrontToBack.pop();
        }

        ///////////////////////////////////////////
        // 2. Draw the skybox (early depth testing) if any
        if (mSkyBox) {
            mDrawSkyBox();
        }

        ///////////////////////////////////////////
        // 3. Draw back to front
        while (!mBackToFront.empty()) {
            mDraw(mBackToFront.top().renderingPackage, *mV, *mP);
            mBackToFront.pop();
        }


        ///////////////////////////////////////////
        // 4. Draw the HUD
        glDisable(GL_DEPTH_TEST);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        for (auto hudElem : mHUDSystem.getHUDElements()) {
            for (auto rp : hudElem->mEntity->getRenderingComponent()->getRenderingPackages()) {
                mDraw(rp, mHUDSystem.mV, mHUDSystem.mP);
                //mDraw(rp, *mV, *mP);
            }
        }
        glDisable(GL_BLEND);
        glEnable(GL_DEPTH_TEST);
    }
Пример #2
0
BOOPSI_DISPATCHER(IPTR, classdispatcher, cl, obj, msg) {
    mybug(0,("Class Dispatcher!\n"));

    switch (msg->MethodID) {

        case OM_NEW:
            return mNew(cl,obj,(APTR)msg);
        case OM_DISPOSE:
            return mDispose(cl,obj,(APTR)msg);

        case MUIM_Setup:
            return mSetup(cl,obj,(APTR)msg);
        case MUIM_Cleanup:
            return mCleanup(cl,obj,(APTR)msg);

        case OM_SET:
            return mSet(cl,obj,(APTR)msg);
        case OM_GET:
            return mGet(cl,obj,(APTR)msg);

        case MUIM_AskMinMax:
            return mAskMinMax(cl,obj,(APTR)msg);
        case MUIM_Hide:
            return mHide(cl,obj,(APTR)msg);
        case MUIM_Show:
            return mShow(cl,obj,(APTR)msg);

        case MUIM_Draw:
            return mDraw(cl,obj,(APTR)msg);

//        case MUIM_Action_HandlePsdEvents:
//            return mPsdEventHandler(cl,obj,(APTR)msg);

        case MUIM_Action_HandleTmrEvents:
            return mTmrEventHandler(cl,obj,(APTR)msg);

        default:
            return DoSuperMethodA(cl,obj,msg);
    }

    return 0;
}