void CShockWaveEffect::Render() { if(!PreRender()) { return; } if (GetOwner() != NULL) { // HIDDEN 속성의 NPC의 이펙트를 보기 위해서는 캐릭터가 ENF_SHOWHIDDEN을 가지고 있어야 한다. if (GetOwner()->IsFlagOn(ENF_HIDDEN) && (CEntity::GetPlayerEntity(0)->IsFlagOff(ENF_SHOWHIDDEN) || (CEntity::GetPlayerEntity(0)->IsFlagOn(ENF_SHOWHIDDEN)&&!GetOwner()->IsEnemy())))//ENF_SHOWHIDDEN이면 npc effect는 볼 수 있다. return; } gfxSetBlendType(m_eBlendType); if(m_ptdTexture != NULL) { gfxSetTextureUnit(0); m_ptdTexture->SetAsCurrent(); if(RM_AreHardwareShadersAvailable()) { gfxSetVertexProgram( m_ulVertexProgramTex ); gfxSetPixelProgram( m_ulPixelProgramTex ); } else { gfxSetTextureModulation(1); } } else { if(RM_AreHardwareShadersAvailable()) { gfxSetVertexProgram( m_ulVertexProgramNoTex ); gfxSetPixelProgram( m_ulPixelProgramNoTex ); } else { //gfxSetTextureSelectArg(0, GFX_TA_DIFFUSE, GFX_TA_DIFFUSE); } } gfxSetVertexArray( &m_vectorGFXVertex[0], m_vectorGFXVertex.size() ); gfxSetColorArray( &m_vectorGFXColor[0] ); if(m_ptdTexture != NULL) gfxSetTexCoordArray( &m_vectorTexCoord[0], FALSE ); gfxDrawElements( m_iSplitCount * 2 * 3, &m_vectorIndex[0]); if(!RM_AreHardwareShadersAvailable()) { //gfxSetTextureSelectArg(0, GFX_TA_TEXTURE, GFX_TA_TEXTURE); gfxSetTextureModulation(1); } PostRender(); }
// fill rate benchmark static DOUBLE FillRatePass(INDEX ct) { if( !_pdp->Lock()) { ASSERT(FALSE); return 0.0; } StartTimer(); _pdp->Fill(C_GRAY|255); _pdp->FillZBuffer(1.0f); GFXVertex avtx[4]; avtx[0].x = 0; avtx[0].y = 0; avtx[0].z = 0.5f; avtx[1].x = 0; avtx[1].y = _pixSizeJ; avtx[1].z = 0.5f; avtx[2].x = _pixSizeI; avtx[2].y = _pixSizeJ; avtx[2].z = 0.5f; avtx[3].x = _pixSizeI; avtx[3].y = 0; avtx[3].z = 0.5f; GFXTexCoord atex[4] = { {0,0}, {0,1}, {1,1}, {1,0} }; GFXColor acol[4] = { 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 0xFFFF00FF }; INDEX_T aidx[6] = { 0,1,2, 0,2,3}; gfxSetVertexArray( &avtx[0], 4); gfxSetTexCoordArray( &atex[0], FALSE); gfxSetColorArray( &acol[0]); if(_bTexture) { gfxEnableTexture(); if(_bMultiTexture) { gfxSetTextureUnit(1); gfxEnableTexture(); gfxSetTexture( _ulTexObject, _tpLocal); gfxSetTexCoordArray(atex, FALSE); gfxSetTextureUnit(0); } } else { gfxDisableTexture(); } if(_bBlend) { gfxEnableBlend(); if(_bTexture) { gfxBlendFunc( GFX_SRC_ALPHA, GFX_INV_SRC_ALPHA); } else { gfxBlendFunc( GFX_ONE, GFX_ONE); } } else { gfxDisableBlend(); } if(_bDepth) { gfxEnableDepthTest(); gfxEnableDepthWrite(); } else { gfxDisableDepthTest(); gfxDisableDepthWrite(); } gfxDisableAlphaTest(); for( INDEX i=0; i<ct; i++) gfxDrawElements( 6, &aidx[0]); if(_bMultiTexture) { gfxSetTextureUnit(1); gfxDisableTexture(); gfxSetTextureUnit(0); } _pdp->Unlock(); gfxFinish(); _pvp->SwapBuffers(); return StopTimer(); }
static DOUBLE TrisTroughputPass(INDEX ct) { if( !_pdp->Lock()) { ASSERT(FALSE); return 0.0; } StartTimer(); gfxSetFrustum( -0.5f, +0.5f, -0.5f, +0.5f, 0.5f, 2.0f); gfxSetViewMatrix(NULL); gfxCullFace(GFX_NONE); _pdp->Fill(C_GRAY|255); _pdp->FillZBuffer(1.0f); if(_bTexture) { gfxEnableTexture(); } else { gfxDisableTexture(); } if(_bBlend) { gfxEnableBlend(); gfxBlendFunc( GFX_ONE, GFX_ONE); } else { gfxDisableBlend(); } if(_bDepth) { gfxEnableDepthTest(); gfxEnableDepthWrite(); } else { gfxDisableDepthTest(); gfxDisableDepthWrite(); } gfxDisableAlphaTest(); gfxSetVertexArray( &_avtx[0], _avtx.Count()); gfxLockArrays(); gfxSetTexCoordArray( &_atex[0], FALSE); gfxSetColorArray( &_acol[0]); if(_bMultiTexture) { gfxSetTextureUnit(1); gfxEnableTexture(); gfxSetTexture( _ulTexObject, _tpLocal); gfxSetTexCoordArray( &_atex[0], FALSE); gfxSetTextureUnit(0); } for( INDEX i=0; i<ct; i++) gfxDrawElements( _aiElements.Count(), &_aiElements[0]); gfxUnlockArrays(); if(_bMultiTexture) { gfxSetTextureUnit(1); gfxDisableTexture(); gfxSetTextureUnit(0); } _pdp->Unlock(); gfxFinish(); _pvp->SwapBuffers(); return StopTimer(); }