///////////////////////////////////////////////////////// // renderMess // ///////////////////////////////////////////////////////// void GemBase :: gem_renderMess(GemCache* cache, GemState*state) { m_cache=cache; if(m_cache && m_cache->m_magic!=GEMCACHE_MAGIC) { m_cache=NULL; } if(INIT==m_state) { if(isRunnable()) { m_state=ENABLED; } else { m_state=DISABLED; } } if(MODIFIED==m_state) { stopRendering(); m_state=ENABLED; } if(ENABLED==m_state) { startRendering(); m_state=RENDERING; } if(RENDERING==m_state) { gem_amRendering=true; if(state) { render(state); } continueRender(state); if(state) { postrender(state); } } m_modified=false; }
void ofxGuiGroup::render(){ prerender(); border.draw(); headerBg.draw(); ofBlendMode blendMode = ofGetStyle().blendingMode; if(blendMode!=OF_BLENDMODE_ALPHA){ ofEnableAlphaBlending(); } ofColor c = ofGetStyle().color; ofSetColor(thisTextColor); bindFontTexture(); textMesh.draw(); unbindFontTexture(); if(!minimized){ for(int i = 0; i < (int)collection.size(); i++){ collection[i]->draw(useFbo); } } ofSetColor(c); if(blendMode!=OF_BLENDMODE_ALPHA){ ofEnableBlendMode(blendMode); } postrender(); }
void RCharCloth::renderforce() { prerender(); render(); postrender(); }
////////////////////////////////////////////////////////////////////////// // render ////////////////////////////////////////////////////////////////////////// void RCharCloth::render() { // bHarewareBuffer = true; int i; LPDIRECT3DDEVICE9 dev = RGetDevice(); // Get Device Pointer UpdateNormal(); RMtrlMgr* pMtrlMgr = &mpMeshNode->m_pParentMesh->m_mtrl_list_ex; RMtrl* pMtrl = pMtrlMgr->Get_s(mpMeshNode->m_mtrl_id,-1); int num_mtrl = pMtrl->m_sub_mtrl_num; int point_index; // 현재 버텍스의 인덱스 for( i = 0 ; i < mpMeshNode->m_face_num ; ++i ) { for( int j = 0 ; j < 3; ++j ) { point_index = mpMeshNode->m_face_list[i].m_point_index[j]; gVertices[3*i+j].p = m_pX[point_index]; gVertices[3*i+j].tu = mpMeshNode->m_face_list[i].m_point_tex[j].x; gVertices[3*i+j].tv = mpMeshNode->m_face_list[i].m_point_tex[j].y; gVertices[3*i+j].n = m_pNormal[point_index]; } } if( bHarewareBuffer && gpClothVertexBuffer) { //// Copy Begin void *Buffer; if( FAILED( gpClothVertexBuffer->Lock( 0, sizeof(RVertex) * mpMeshNode->m_face_num * 3, (VOID**)&Buffer, D3DLOCK_DISCARD ))) { bHarewareBuffer = false; REL( gpClothVertexBuffer ); mlog("Fail to lock of Vertex Buffer\n"); goto e2SoftRender; } //memcpy( Buffer, gVertices, sizeof(RVertex) * m_nCntP ); memcpy( Buffer, gVertices, sizeof(RVertex) * mpMeshNode->m_face_num * 3 ); gpClothVertexBuffer->Unlock(); // Copy End } e2SoftRender: prerender(); if(mpMesh->m_pVisualMesh) mpMesh->m_pVisualMesh->UpdateLight(); rmatrix rtemp; dev->GetTransform( D3DTS_WORLD, &rtemp ); dev->SetTransform( D3DTS_WORLD , &( mLocalMat * mWorldMat ) ); mpMesh->SetCharacterMtrl_ON( pMtrl,mpMeshNode,1 ,mpMeshNode->GetTColor()); #ifdef USE_TOON_RENDER mpMeshNode->ToonRenderSettingOn(pMtrl); #endif if( bHarewareBuffer ) { dev->DrawPrimitive( D3DPT_TRIANGLELIST, 0, mpMeshNode->m_face_num ); } else { dev->DrawPrimitiveUP( D3DPT_TRIANGLELIST, mpMeshNode->m_face_num, gVertices, sizeof(RVertex)); } #ifdef USE_TOON_RENDER // if(Silhouette) { mpMeshNode->ToonRenderSilhouetteSettingOn(); if( bHarewareBuffer ) dev->DrawPrimitive( D3DPT_TRIANGLELIST, 0, mpMeshNode->m_face_num ); else dev->DrawPrimitiveUP( D3DPT_TRIANGLELIST, mpMeshNode->m_face_num, gVertices, sizeof(RVertex)); mpMeshNode->ToonRenderSilhouetteSettingOff(); } mpMeshNode->ToonRenderSettingOff(); #endif mpMesh->SetCharacterMtrl_OFF( pMtrl, 1 ); dev->SetTransform( D3DTS_WORLD, &rtemp ); postrender(); }