//----------------------------------------------------------------------------// void OgreTextureTarget::declareRenderSize(const Sizef& sz) { // exit if current size is enough if ((d_area.getWidth() >= sz.d_width) && (d_area.getHeight() >=sz.d_height)) return; Ogre::TexturePtr rttTex = Ogre::TextureManager::getSingleton().createManual( OgreTexture::getUniqueName(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, sz.d_width, sz.d_height, 1, 0, Ogre::PF_A8R8G8B8, Ogre::TU_RENDERTARGET); d_renderTarget = rttTex->getBuffer()->getRenderTarget(); Rectf init_area( Vector2f(0, 0), Sizef(d_renderTarget->getWidth(), d_renderTarget->getHeight()) ); setArea(init_area); // delete viewport and reset ptr so a new one is generated. This is // required because we have changed d_renderTarget so need a new VP also. delete d_viewport; d_viewport = 0; // because Texture takes ownership, the act of setting the new ogre texture // also ensures any previous ogre texture is released. d_CEGUITexture->setOgreTexture(rttTex, true); clear(); }
//----------------------------------------------------------------------------// void OgreWindowTarget::initRenderTarget(Ogre::RenderTarget& target) { d_renderTarget = ⌖ Rectf init_area(glm::vec2(0.0f, 0.0f), Sizef(static_cast<float>(d_renderTarget->getWidth()), static_cast<float>(d_renderTarget->getHeight())) ); setArea(init_area); }
//----------------------------------------------------------------------------// OpenGLViewportTarget::OpenGLViewportTarget(OpenGLRenderer& owner) : OpenGLRenderTarget(owner) { // viewport area defaults to whatever the current OpenGL viewport is set to GLint vp[4]; glGetIntegerv(GL_VIEWPORT, vp); Rect init_area(Vector2(static_cast<float>(vp[0]), static_cast<float>(vp[1])), Size(static_cast<float>(vp[2]), static_cast<float>(vp[3]))); setArea(init_area); }
int main(){ int i, j; state_t *statep; //popolo le aree della ROM init_area(INT_NEWAREA, (memaddr) int_handler); init_area(TLB_NEWAREA, (memaddr) tlb_handler); init_area(PGMTRAP_NEWAREA, (memaddr) trap_handler); init_area(SYSBK_NEWAREA, (memaddr) sys_handler); //inizializzo le strutture di phase1 initPcbs(); initASL(); //inizializzo le variabili di sistema process_count = 0; softblock_count = 0; //mappa dei process id liberi for( i = 0; i < MAXPROC ; i++ ) pid_map[i] = 0; //array di puntatori ai processi attivi for( i = 0; i < MAXPROC ; i++ ) activeProcesses[i] = NULL; //semafori dei device for(i = 0; i < MAX_DEVICES; i++) devSem[i] = 0; //registri di stato da conservare dei device for(i = 0; i < MAX_DEVICES; i++) devStatus[i] = 0; //tempo di gestione degli interrupt for(i = 0; i < MAX_DEVICES; i++) interruptTime[i] = 0; if( !((first = allocPcb()) && (twiddle = allocPcb()))){ PANIC(); } processSet( twiddle, (memaddr) idle, PRIO_IDLE); //il processo idle ha id 1 processSet( first, (memaddr) test, PRIO_NORM ); current_process = NULL; process_count++; scheduler(); }