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;
}
Example #3
0
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;
}