void CHookedWindow::_KillWindow() { if (!_stOldWindowProc && !_stOldRootWindowProc) return; LogWrite(InstIdx(), "**Exiting main loop**", LT_INFO, __FILE__, __LINE__); Console()->UnRegCom("quit"); _pDelMessageProc->Invoke(TWindowMessage(WMT_CLOSE)); _pDelMessageProc->Invoke(TWindowMessage(WMT_DESTROY)); if (!_bNoMloopHook && !ReleaseTimer(_uiUpdateTimer)) LOG("Can't kill update timer.", LT_ERROR); if( SetWindowLongPtr(_hWnd, GWLP_WNDPROC, (LONG_PTR)_stOldWindowProc)!=NULL && (_stOldRootWindowProc == NULL || SetWindowLongPtr(_hRootHWnd, GWLP_WNDPROC, (LONG_PTR)_stOldRootWindowProc) != NULL) ) LOG("Window controls message hooks unset successfully.", LT_INFO); else LOG("Can't unset window control message hooks.", LT_ERROR); _stOldWindowProc = NULL; _stOldRootWindowProc = NULL; _pDelMessageProc->Invoke(TWindowMessage(WMT_RELEASED)); }
CRender::CRender(uint uiInstIdx): CInstancedObj(uiInstIdx) { _pCoreRenderer = Core()->pCoreRenderer(); Console()->RegComProc("rnd_list_features", "Prints list of features supported by current Core Renderer implementation.", &_s_ConListFeatures, (void*)this); bool b_supported; _strFeturesList = "Core Renderer supported features\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_BUILTIN_FULLSCREEN_MODE, b_supported); _strFeturesList += std::string("Builtin fullscreen mode: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_BUILTIN_STATE_FILTER, b_supported); _strFeturesList += std::string("Builtin state filter: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_MULTISAMPLING, b_supported); _strFeturesList += std::string("Multisampling: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_VSYNC, b_supported); _strFeturesList += std::string("Vertical synchronization: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_PROGRAMMABLE_PIPELINE, b_supported); _strFeturesList += std::string("Programmable pipeline: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_LEGACY_FIXED_FUNCTION_PIPELINE_API, b_supported); _strFeturesList += std::string("Legacy fixed function pipeline API: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_BGRA_DATA_FORMAT, b_supported); _strFeturesList += std::string("BGRA textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_COMPRESSION, b_supported); _strFeturesList += std::string("Texture compression: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_NON_POWER_OF_TWO_TEXTURES, b_supported); _strFeturesList += std::string("Non power of two textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_DEPTH_TEXTURES, b_supported); _strFeturesList += std::string("Depth textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_ANISOTROPY, b_supported); _strFeturesList += std::string("Texture anisotropy: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_MIPMAP_GENERATION, b_supported); _strFeturesList += std::string("Hardware mipmap generation: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_MIRRORED_REPEAT, b_supported); _strFeturesList += std::string("Texture mirrored repeat: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_MIRROR_CLAMP, b_supported); _strFeturesList += std::string("Texture mirror clamp: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_GEOMETRY_BUFFER, b_supported); _strFeturesList += std::string("Hardware geometry buffers: ") + (b_supported ? "Yes" : "No") + "\n\t";; _pCoreRenderer->IsFeatureSupported(CRFT_FRAME_BUFFER, b_supported); _strFeturesList += std::string("Hardware frame buffers: ") + (b_supported ? "Yes" : "No"); // Don't append "\n\t" to the last line! assert(_strFeturesList[_strFeturesList.length() - 2] != '\n' && _strFeturesList[_strFeturesList.length() - 1] != '\t'); LOG(_strFeturesList, LT_INFO); for (size_t i = 0; i < _strFeturesList.size(); ++i) if (_strFeturesList[i] == '\t') _strFeturesList[i] = ' '; _strMetricsList = "Core Renderer device metrics\n\t"; int i_value; _pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_RESOLUTION, i_value); _strMetricsList += "Maximum texture resolution: " + IntToStr(i_value) + "X" + IntToStr(i_value) + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRFT_TEXTURE_ANISOTROPY, b_supported); if (b_supported) { _pCoreRenderer->GetDeviceMetric(CRMT_MAX_ANISOTROPY_LEVEL, i_value); _strMetricsList += "Maximum anisotropy level: " + IntToStr(i_value) + "X\n\t"; } _pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_LAYERS, i_value); _strMetricsList += "Maximum multitexturing layer: " + IntToStr(i_value); // Don't append "\n\t" to the last line! assert(_strMetricsList[_strMetricsList.length() - 2] != '\n' && _strMetricsList[_strMetricsList.length() - 1] != '\t'); LOG(_strMetricsList, LT_INFO); for (size_t i = 0; i < _strMetricsList.size(); ++i) if (_strMetricsList[i] == '\t') _strMetricsList[i] = ' '; SetClearColor(ColorClear()); _pRender2D = new CRender2D(InstIdx()); _pRender3D = new CRender3D(InstIdx()); LOG("Render subsystem initialized.", LT_INFO); }
CRender::CRender(uint uiInstIdx): CInstancedObj(uiInstIdx), _fFovAngle(60.f), _fZNear(0.25f), _fZFar(1000.f) { _pCoreRenderer = Core()->pCoreRenderer(); bool b_supported; std::string flist = "Core Renderer supported features\n\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_BUILTIN_FSCREEN_MODE, b_supported); flist += std::string("Hardware FScreen: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_BUILTIN_STATE_FILTER, b_supported); flist += std::string("Builtin State Filter: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_MULTISAMPLING, b_supported); flist += std::string("Multisampling: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRDF_VSYNC, b_supported); flist += std::string("VSync: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRDF_PROGRAMMABLE_PIPELINE, b_supported); flist += std::string("Programmable pipeline: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_BGRA_DATA_FORMAT, b_supported); flist += std::string("BGRA textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_COMPRESSION, b_supported); flist += std::string("Texture compression: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_NON_POWER_OF_TWO_TEXTURES, b_supported); flist += std::string("Non power of two textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_DEPTH_TEXTURES, b_supported); flist += std::string("Depth textures: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_ANISOTROPY, b_supported); flist += std::string("Texture anisotropy: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_MIPMAP_GENERATION, b_supported); flist += std::string("Hardware mipmap generation: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRDF_TEXTURE_MIRRORED_REPEAT, b_supported); flist += std::string("Texture mirrored repeat: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRDF_TEXTURE_MIRROR_CLAMP, b_supported); flist += std::string("Texture mirror clamp: ") + (b_supported ? "Yes" : "No") + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRDF_GEOMETRY_BUFFER, b_supported); flist += std::string("Geometry buffer: ") + (b_supported ? "Yes" : "No") + "\n\t"; LOG(flist, LT_INFO); std::string mlist = "Core Renderer device metrics\n\n\t"; _pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_RESOLUTION, _iMaxTexResolution); mlist += "Maximum texture resolution: " + IntToStr(_iMaxTexResolution) + "X" + IntToStr(_iMaxTexResolution) + "\n\t"; _pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_ANISOTROPY, b_supported); if (b_supported) { _pCoreRenderer->GetDeviceMetric(CRMT_MAX_ANISOTROPY_LEVEL, _iMaxAnisotropy); mlist += "Maximum anisotropy level: " + IntToStr(_iMaxAnisotropy) + "X" + "\n\t"; } _pCoreRenderer->GetDeviceMetric(CRMT_MAX_LIGHTS_PER_PASS, _iMaxLight); _pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_LAYERS, _iMaxTexUnits); mlist += "Maximum multitexturing layer: " + IntToStr(_iMaxTexUnits) + "\n\t"; LOG(mlist, LT_INFO); SetClearColor(TColor4(0x64646400)); _pRender2D = new CRender2D(InstIdx()); LOG("Render subsystem initialized.", LT_INFO); }