std::unique_ptr< WindowsAdapter > CreateWindowsAdapter( const int id ) noexcept { ComPtr< IDXGIFactory1 > factory; auto hresult = CreateDXGIFactory1( __uuidof( IDXGIFactory1 ), reinterpret_cast< void** >( &factory ) ); if ( FAILED( hresult ) ) { return nullptr; } return CreateAdapter( factory, id ); }
std::unique_ptr< WindowsAdapter > CreateWindowsAdapter( const WindowsAdapterCapabilities& capabilities ) noexcept { ComPtr< IDXGIFactory1 > factory; auto hresult = CreateDXGIFactory1( __uuidof( IDXGIFactory1 ), reinterpret_cast< void** >( &factory ) ); if ( FAILED( hresult ) ) { return nullptr; } int id = 0; auto adapter = CreateAdapter( factory, id ); while ( adapter != nullptr ) { // check capabilities if ( adapter->CheckCapabilities( capabilities ) ) { return adapter; } // next adapter id += 1; adapter = CreateAdapter( factory, id ); } return nullptr; }
bool DXManager::InitDX12(HWND hWnd, int windowHeight, int windowWidth) { HRESULT hr = S_FALSE; hr = CreateFactory(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Factory."); return false; } hr = CreateAdapter(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Adapter."); return false; } hr = CreateAdapterOutput(); if (FAILED(hr)) { Log::LogError("DXManager Can't Create Adapter Output."); return false; } hr = CreateDisplayModList(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Display Mod List."); return false; } hr = CreateAdapterDesc(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Adapter Desc."); return false; } hr = CreateDivice(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Device."); return false; } hr = CreateComandQueue(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Command Queue."); return false; } hr = CreateSwapChain(); if (FAILED(hr)) { Log::LogError("DXManager Can't Create Swap Chain."); return false; } hr = CreateCommandAllocator(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Command Allocator."); return false; } hr = CreateCommandList(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Command List."); return false; } hr = CreateFence(); if (FAILED(hr)) { Log::LogError("DXManager::Can't Create Fence."); return false; } return true; }
CStdSerialize *RbClassFactory::CreateObject(std::string strClassType, std::string strObjectType, bool bThrowError) { CStdSerialize *lpObject=NULL; strClassType = Std_ToUpper(Std_Trim(strClassType)); if(strClassType == "RIGIDBODY") lpObject = CreateRigidBody(strObjectType, bThrowError); else if(strClassType == "JOINT") lpObject = CreateJoint(strObjectType, bThrowError); else if(strClassType == "ORGANISM") lpObject = CreateStructure(strObjectType, bThrowError); else if(strClassType == "STRUCTURE") lpObject = CreateStructure(strObjectType, bThrowError); else if(strClassType == "SIMULATOR") lpObject = CreateSimulator(strObjectType, bThrowError); else if(strClassType == "KEYFRAME") lpObject = CreateKeyFrame(strObjectType, bThrowError); else if(strClassType == "DATACHART") lpObject = CreateDataChart(strObjectType, bThrowError); else if(strClassType == "DATACOLUMN") lpObject = CreateDataColumn(strObjectType, bThrowError); else if(strClassType == "EXTERNALSTIMULUS") lpObject = CreateExternalStimulus(strObjectType, bThrowError); else if(strClassType == "ADAPTER") lpObject = CreateAdapter(strObjectType, bThrowError); else if(strClassType == "GAIN") lpObject = CreateGain(strObjectType, bThrowError); else if(strClassType == "HUDITEM") lpObject = CreateHudItem(strObjectType, bThrowError); else if(strClassType == "HUD") lpObject = CreateHud(strObjectType, bThrowError); else if(strClassType == "MATERIAL") lpObject = CreateMaterialItem(strObjectType, bThrowError); else if(strClassType == "SIMULATIONWINDOW") lpObject = CreateWindowItem(strObjectType, bThrowError); else if(strClassType == "LIGHT") lpObject = CreateLight(strObjectType, bThrowError); else if(strClassType == "NEURALMODULE") lpObject = CreateNeuralModule(strObjectType, bThrowError); else if(strClassType == "CONSTRAINTRELAXATION") lpObject = CreateConstraintRelaxation(strObjectType, bThrowError); else if(strClassType == "CONSTRAINTFRICTION") lpObject = CreateConstraintFriction(strObjectType, bThrowError); else if(strClassType == "ROBOTINTERFACE") lpObject = CreateRobotInterface(strObjectType, bThrowError); else if(strClassType == "ROBOTIOCONTROL") lpObject = CreateRobotIOControl(strObjectType, bThrowError); else if(strClassType == "ROBOTPARTINTERFACE") lpObject = CreateRobotPartInterface(strObjectType, bThrowError); else if(strClassType == "REMOTECONTROLLINKAGE") lpObject = CreateRemoteControlLinkage(strObjectType, bThrowError); else { lpObject = NULL; if(bThrowError) THROW_PARAM_ERROR(Std_Err_lInvalidClassType, Std_Err_strInvalidClassType, "ClassType", strClassType); } return lpObject; }