Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
//GUI BackBuffer ID3D10Device1 * pD3D10Device; //Das D3D10-Device für die GUI ID3D10Texture2D * pGUIBuffer10; //Das D3D10-Interface des BackBuffer ID3D11Texture2D * pGUIBuffer11; //Das D3D11-Interface des BackBuffer ID3D10RenderTargetView * pGUIRTV10; //Das RenderTarget der GUI ID3D11ShaderResourceView * pGUISRV11; //Das von der GUI gerenderte Bild nutzen |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
//Direct3D10Device für die GUI erstellen D3D10CreateDevice1(pVideo->GetAdapter(), D3D10_DRIVER_TYPE_HARDWARE, NULL, 0, D3D10_FEATURE_LEVEL_10_0, D3D10_1_SDK_VERSION, &pD3D10Device); //BackBuffer (D3D10) erstellen D3D10_TEXTURE2D_DESC BufferTextureDesc; BufferTextureDesc.Width = VideoSettings.dwBBSizeX; BufferTextureDesc.Height = VideoSettings.dwBBSizeY; BufferTextureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; BufferTextureDesc.MipLevels = 1; BufferTextureDesc.ArraySize = 1; BufferTextureDesc.SampleDesc.Count = 1; BufferTextureDesc.SampleDesc.Quality= 0; BufferTextureDesc.Usage = D3D10_USAGE_DEFAULT; BufferTextureDesc.BindFlags = D3D10_BIND_RENDER_TARGET|D3D10_BIND_SHADER_RESOURCE; BufferTextureDesc.CPUAccessFlags = 0; BufferTextureDesc.MiscFlags = D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX; TRY_DX(pD3D10Device->CreateTexture2D(&BufferTextureDesc, NULL, &pGUIBuffer10)); //BackBuffer (D3D11) teilen IDXGIResource * pBackBufferResource; TRY_DX(pGUIBuffer10->QueryInterface(__uuidof(IDXGIResource*), (void**)(&pBackBufferResource))); HANDLE hSharedBackBuffer= NULL; TRY_DX(pBackBufferResource->GetSharedHandle(&hSharedBackBuffer)); ID3D11Resource * pBackBufferSharedResource; TRY_DX(pD3D11Device->OpenSharedResource(hSharedBackBuffer, __uuidof(ID3D11Resource*), (void**)(&pBackBufferSharedResource))); TRY_DX(pBackBufferSharedResource->QueryInterface(__uuidof(ID3D11Texture2D*), (void**)(&pGUIBuffer11))); pBackBufferSharedResource->Release(); //RTV und SRV erstellen TRY_DX(pD3D10Device->CreateRenderTargetView(pGUIBuffer10, NULL, &pGUIRTV10)); TRY_DX(pD3D11Device->CreateShaderResourceView(pGUIBuffer11, NULL, &pGUISRV11)); //Keyed Mutexes anfordern TRY_DX(pGUIBuffer10->QueryInterface(_uuidof(IDXGIKeyedMutex*), (void**)(&pMutex10))); TRY_DX(pGUIBuffer11->QueryInterface(_uuidof(IDXGIKeyedMutex*), (void**)(&pMutex11))); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
////////////////////////////////////////////////////////////////// //Direct in den BackBuffer rendern Video::VideoDevice * pVideo= Video::VideoDevice::Instance(); ID3D11DeviceContext * pDC= pVideo->GetImmediateDeviceContext(); ID3D11Resource * pBackBuffer; pVideo->GetBackBufferRTV()->GetResource(&pBackBuffer); //BackBuffer in den GUIBuffer kopieren pMutex11->AcquireSync(0, INFINITE); pDC->CopyResource(pGUIBuffer11, pBackBuffer); pMutex11->ReleaseSync(0); //GUI rendern pMutex10->AcquireSync(0, INFINITE); pD3D10Device->OMSetRenderTargets(1, &pGUIRTV10, NULL); CEGUI::System::getSingleton().renderGUI(); //Hier wird in den BackBuffer gerendert. Im BackBuffer ist das Bild der Szene. Jetzt kommt die GUI oben drauf. pMutex10->ReleaseSync(0); //GUIBuffer zurück in den BackBuffer kopieren pMutex11->AcquireSync(0, INFINITE); pDC->CopyResource(pBackBuffer, pGUIBuffer11); pMutex11->ReleaseSync(0); pBackBuffer->Release(); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//Variablen HRESULT hResult; db_sConfig* pConfig = dbGetConfig(); UINT uiCreateDeviceFlags = 0; #ifdef DB_DEBUG //Wenn DEBUG - Modus aktiv ist DEBUG Direct3D - Device erstellen... uiCreateDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG; #endif //Information ausgeben... DB_INFO("Initialisiere Direct3D10.1..."); //Direct3D10 - Schnittstelle initialisieren... hResult = D3D10CreateDevice1(NULL, (D3D10_DRIVER_TYPE)(pConfig->Direct3D.mDriverType), NULL, uiCreateDeviceFlags, D3D10_FEATURE_LEVEL_10_1, D3D10_1_SDK_VERSION, &this->m_pD3D10Device1); //Überprüfen ob die erstellung Fehlgeschlagen ist, wenn ja dann DirectX10 probieren... if(FAILED(hResult)) { //Information ausgeben... DB_INFO("Fehler beim initialisieren von Direct3D10.1. Probiere Direct3D10 zu initialisieren!"); //Direct3D10 - Schnittstelle initialisieren... DB_ERROR_DIRECTX(D3D10CreateDevice1(NULL, (D3D10_DRIVER_TYPE)(pConfig->Direct3D.mDriverType), NULL, uiCreateDeviceFlags, D3D10_FEATURE_LEVEL_10_0, D3D10_1_SDK_VERSION, &this->m_pD3D10Device1), "D3D10CreateDevice1:D3D10_FEATURE_LEVEL_10_0", DB_ERROR); } //Information ausgeben... DB_INFO("Direct3D10.1 wurde erfolgreich initialisiert");; //Backbuffer definieren... D3D10_TEXTURE2D_DESC mD3D10BufferDesc; mD3D10BufferDesc.Width = pConfig->Direct3D.uiWidth; mD3D10BufferDesc.Height = pConfig->Direct3D.uiHeight; mD3D10BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; mD3D10BufferDesc.MipLevels = 1; mD3D10BufferDesc.ArraySize = 1; mD3D10BufferDesc.SampleDesc.Count = pConfig->Direct3D.uiMultiSampleCount; mD3D10BufferDesc.SampleDesc.Quality = pConfig->Direct3D.uiMultiSampleQuality; mD3D10BufferDesc.Usage = D3D10_USAGE_DEFAULT; mD3D10BufferDesc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE; mD3D10BufferDesc.CPUAccessFlags = 0; mD3D10BufferDesc.MiscFlags = D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX; //Backbuffer erstellen... (HIER KOMMT E_INVALIDARG) DB_ERROR_DIRECTX(m_pD3D10Device1->CreateTexture2D(&mD3D10BufferDesc, NULL, &m_pD3D10BackBuffer), "m_pD3D10Device1->CreateTexture2D():m_pD3D10BackBuffer", DB_ERROR); |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ashnarott« (10.12.2010, 17:50)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlazeX« (10.12.2010, 20:34)
C-/C++-Quelltext |
|
1 2 3 4 5 |
//Factory erstellen... DB_ERROR_DIRECTX(CreateDXGIFactory1(__uuidof(IDXGIFactory1), (void**)(&pFactory)), "CreateDXGIFactor1():pFactory", DB_ERROR); //Adapter abfragen... DB_ERROR_DIRECTX(pFactory->EnumAdapters1(0, &pDeviceAdapter), "pFactory->EnumAdapters1()", DB_ERROR); |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ashnarott« (11.12.2010, 13:10)
Werbeanzeige