void COGL_FragmentProgramCombiner::InitCombinerCycle12(void) { if( !m_bFragmentProgramIsSupported ) { COGLColorCombiner4::InitCombinerCycle12(); return; } #ifdef DEBUGGER if( debuggerDropCombiners ) { UpdateCombiner(m_pDecodedMux->m_dwMux0,m_pDecodedMux->m_dwMux1); m_vCompiledShaders.clear(); m_dwLastMux0 = m_dwLastMux1 = 0; debuggerDropCombiners = false; } #endif m_pOGLRender->EnableMultiTexture(); bool combinerIsChanged = false; if( m_pDecodedMux->m_dwMux0 != m_dwLastMux0 || m_pDecodedMux->m_dwMux1 != m_dwLastMux1 || m_lastIndex < 0 ) { combinerIsChanged = true; m_lastIndex = FindCompiledMux(); if( m_lastIndex < 0 ) // Can not found { m_lastIndex = ParseDecodedMux(); } m_dwLastMux0 = m_pDecodedMux->m_dwMux0; m_dwLastMux1 = m_pDecodedMux->m_dwMux1; } GenerateCombinerSettingConstants(m_lastIndex); if( m_bCycleChanged || combinerIsChanged || gRDP.texturesAreReloaded || gRDP.colorsAreReloaded ) { if( m_bCycleChanged || combinerIsChanged ) { GenerateCombinerSettingConstants(m_lastIndex); GenerateCombinerSetting(m_lastIndex); } else if( gRDP.colorsAreReloaded ) { GenerateCombinerSettingConstants(m_lastIndex); } m_pOGLRender->SetAllTexelRepeatFlag(); gRDP.colorsAreReloaded = false; gRDP.texturesAreReloaded = false; } else { m_pOGLRender->SetAllTexelRepeatFlag(); } }
void COGLColorCombinerNvidia::DisplaySimpleMuxString(void) { COGLColorCombiner::DisplaySimpleMuxString(); TRACE0("\nNV Combiner setting\n"); uint32 index = FindCompiledMux(); if( index >= 0 ) { NVRegisterCombinerSettingType &record = m_vCompiledSettings[index]; DisplayNVCombinerString(record); } }
void COGLColorCombinerNvidia::InitCombinerCycle12(void) { if( !m_bNVSupported ) {COGLColorCombiner4::InitCombinerCycle12(); return;} glEnable(GL_REGISTER_COMBINERS_NV); #ifdef DEBUGGER if( debuggerDropCombiners ) { m_vCompiledSettings.clear(); m_dwLastMux0 = m_dwLastMux1 = 0; debuggerDropCombiners = false; } #endif m_pOGLRender->EnableMultiTexture(); bool combinerIsChanged = false; if( m_pDecodedMux->m_dwMux0 != m_dwLastMux0 || m_pDecodedMux->m_dwMux1 != m_dwLastMux1 || m_lastIndex < 0 ) { combinerIsChanged = true; m_lastIndex = FindCompiledMux(); if( m_lastIndex < 0 ) // Can not found { NVRegisterCombinerParserType result; ParseDecodedMux(result); m_lastIndex= SaveParserResult(result); } m_dwLastMux0 = m_pDecodedMux->m_dwMux0; m_dwLastMux1 = m_pDecodedMux->m_dwMux1; GenerateNVRegisterCombinerSetting(m_lastIndex); } m_pOGLRender->SetAllTexelRepeatFlag(); if( m_bCycleChanged || combinerIsChanged || gRDP.texturesAreReloaded || gRDP.colorsAreReloaded ) { gRDP.texturesAreReloaded = false; if( m_bCycleChanged || combinerIsChanged ) { GenerateNVRegisterCombinerSettingConstants(m_lastIndex); GenerateNVRegisterCombinerSetting(m_lastIndex); ApplyFogAtFinalStage(); } else if( gRDP.colorsAreReloaded ) { GenerateNVRegisterCombinerSettingConstants(m_lastIndex); } gRDP.colorsAreReloaded = false; } }