示例#1
0
	std::shared_ptr<IDXGISwapChain3> CreateSwapChain( ID3D12Device * device, ID3D12CommandQueue * commandQueue, const HWND* hWnd, DXGI_SWAP_CHAIN_DESC* swapChainDesc)
	{
		IDXGISwapChain* swapChain;
		IDXGISwapChain3* swapChain3;

		DXGI_SWAP_CHAIN_DESC defaultDesc = {};
		if (!swapChainDesc)
		{
			defaultDesc.BufferCount = 2;
			defaultDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
			defaultDesc.BufferDesc.Width = 1200;
			defaultDesc.BufferDesc.Height = 900;
			defaultDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
			defaultDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
			defaultDesc.OutputWindow = *hWnd;
			defaultDesc.SampleDesc.Count = 1;
			defaultDesc.Windowed = TRUE;
			swapChainDesc = &defaultDesc;
		}

		DirectX::ThrowIfFailed(CreateFactory()->CreateSwapChain(
			commandQueue,
			swapChainDesc,
			&swapChain
			));
		swapChain->QueryInterface(IID_PPV_ARGS(&swapChain3));
		swapChain->Release();
		return std::shared_ptr<IDXGISwapChain3>(swapChain3, ReleaseIUnknown);
	}
示例#2
0
文件: dpycmn.cpp 项目: 252525fb/rpcs3
/* static */ wxDisplayFactory& wxDisplay::Factory()
{
    if ( !gs_factory )
    {
        gs_factory = CreateFactory();
    }

    return *gs_factory;
}
示例#3
0
void Close2(const TCHAR *LogName)
{
	TRACE_FUNCTION_INFO;
	ILogFactoryPtr ipFactory = NULL;
	if (CreateFactory(ipFactory))
	{
		TCHAR AppName[MAX_PATH] = { 0 };
		GetModuleFileName(GetModuleHandle(NULL), AppName, MAX_PATH);
		ipFactory->Close(CComBSTR(AppName), CComBSTR(LogName));
		ipFactory.Release();
	}
}
示例#4
0
csPtr<iMeshWrapper> GeneralMeshBuilder::CreateFactoryAndMesh (
    iEngine* engine, iSector* sector,
    const char* name, const char* factoryname, Primitive* primitive)
{
  csRef<iMeshFactoryWrapper> fact = CreateFactory (engine, factoryname,
      primitive);

  csRef<iMeshWrapper> mesh = engine->CreateMeshWrapper (fact,
      name, sector, csVector3 (0));
  mesh->SetZBufMode (CS_ZBUF_USE);
  mesh->SetRenderPriority (engine->GetObjectRenderPriority ());
  return csPtr<iMeshWrapper> (mesh);
}
示例#5
0
BOOL GetName(const TCHAR *Config, 
			 const TCHAR *Section, 
			 INT FileType,
			 UINT iCodePage,
			 TCHAR Buffer[MAX_PATH],
			 TCHAR XFile[MAX_PATH])
{
	TRACE_FUNCTION_INFO;
	ILogFactoryPtr ipFactory = NULL;
	if (!CreateFactory(ipFactory))
		return FALSE;

	const TCHAR *Value[2] = { _T(""), _T("") };
	if (NULL != Config)  Value[0] = Config;
	if (NULL != Section) Value[1] = Section;

	TCHAR AppName[MAX_PATH] = { 0 };
	GetModuleFileName(GetModuleHandle(NULL), AppName, MAX_PATH);

	CComBSTR bstrLogName;
	CComBSTR bstrXFile;
	if (S_OK != ipFactory->Create(FileType, CComBSTR(AppName), 
		CComBSTR(Value[0]), CComBSTR(Value[1]), &bstrLogName, &bstrXFile))
	{
		LOGGER_WRITE(_T("从日志组件查询日志名称失败."));
		return FALSE;
	}

#ifdef UNICODE
	wmemset(Buffer, 0, MAX_PATH);
	wmemcpy(Buffer, bstrLogName, bstrLogName.Length());
	wmemset(XFile, 0, MAX_PATH);
	wmemcpy(XFile, bstrXFile, bstrXFile.Length());
#else
	memset(Buffer, 0, MAX_PATH);
	WideCharToMultiByte(iCodePage, 0, bstrLogName, -1, Buffer, MAX_PATH - 1, NULL, NULL);
	memset(XFile, 0, MAX_PATH);
	WideCharToMultiByte(iCodePage, 0, bstrXFile, -1, XFile, MAX_PATH - 1, NULL, NULL);
#endif

	return TRUE;
}
示例#6
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;
}