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); }
/* static */ wxDisplayFactory& wxDisplay::Factory() { if ( !gs_factory ) { gs_factory = CreateFactory(); } return *gs_factory; }
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(); } }
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); }
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; }
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; }