Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 16:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



DirectX - D3D11CreateDeviceAndSwapChain verursacht Exception

Discussion on DirectX - D3D11CreateDeviceAndSwapChain verursacht Exception within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
DirectX - D3D11CreateDeviceAndSwapChain verursacht Exception

Habe mir vor kurzem DirectX näher angeschaut und habe nun nach einem Tutorial mal die Init Funktion (grob, nur das wichtigste) geschrieben. Leider bekomme ich bei der Erstellung eine Exception die ich nicht entfernen kann. Vielleicht kennt sich hier ja jemand damit aus oder kann mir sagen, wie ich irgendwelche Debuginformationen da rausbekomme mit denen ich was anfangen kann.

Code:
// aus dem Header
private:
		IDXGISwapChain		*	m_SwapChain;
		ID3D11Device		*	m_Device;
		ID3D11DeviceContext *	m_DeviceContext;


// Funktion
bool CD3D::Initialize(HWND hWnd, unsigned int Height, unsigned int Width)
{
	DXGI_SWAP_CHAIN_DESC SwapChainDesc;
	HRESULT Result;

	SecureZeroMemory(&SwapChainDesc, sizeof(SwapChainDesc));
	
	
	SwapChainDesc.BufferCount = 1;
	SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
	SwapChainDesc.BufferDesc.Height = Height;
	SwapChainDesc.BufferDesc.Width = Width;
	SwapChainDesc.Windowed = true;
	SwapChainDesc.SampleDesc.Count = 4;
	SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
	SwapChainDesc.OutputWindow = hWnd;
	SwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

	Result = D3D11CreateDeviceAndSwapChain	(NULL,
											D3D_DRIVER_TYPE_HARDWARE,
											NULL,
											NULL,
											NULL,
											NULL,
											D3D11_SDK_VERSION,
											&SwapChainDesc,
											&m_SwapChain,
											&m_Device,
											NULL,
											&m_DeviceContext);

	if(FAILED(Result)) return false;

	return true;
}
Sorry für die Formatierung bei der Funktion, sieht irgendwie bei mir in VS ganz anders aus. >.>
Mostey is offline  
Old 10/29/2013, 14:46   #2
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
Was für eine Exception bekommst du?

btw. Debug Info bekommen:
Code:
UINT createDeviceFlags = 0;

#ifdef _DEBUG
    createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

...
...
Result = D3D11CreateDeviceAndSwapChain (
    NULL,
    D3D_DRIVER_TYPE_HARDWARE,
    NULL,
    createDeviceFlags, // Für Debug Info
    NULL,
    NULL,
    D3D11_SDK_VERSION,
    &SwapChainDesc,
    &m_SwapChain,
    &m_Device,
    NULL,
    &m_DeviceContext);

if(FAILED(Result))
{
    SHOW_ERROR(Result);
    return Result;
}
XxharCs is offline  
Thanks
1 User
Old 10/29/2013, 15:15   #3


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by XxharCs View Post
Was für eine Exception bekommst du?

btw. Debug Info bekommen:
Code:
UINT createDeviceFlags = 0;

#ifdef _DEBUG
    createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

...
...
Result = D3D11CreateDeviceAndSwapChain (
    NULL,
    D3D_DRIVER_TYPE_HARDWARE,
    NULL,
    createDeviceFlags, // Für Debug Info
    NULL,
    NULL,
    D3D11_SDK_VERSION,
    &SwapChainDesc,
    &m_SwapChain,
    &m_Device,
    NULL,
    &m_DeviceContext);

if(FAILED(Result))
{
    SHOW_ERROR(Result);
    return Result;
}
Die Funktion "SHOW_ERROR" gibt's nicht, braucht man dafür nen speziellen Header oder hast du die selbst geschrieben?

Exception: Unbehandelte Ausnahme bei 0x6E8D1C68 (d3d11.dll) in DirectX.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0xCDCDCDCD
Mostey is offline  
Old 10/29/2013, 15:36   #4
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
Ja ist halt ne Message Ausgabe. Kannst MessageBox verwenden, oder in ein File schreiben oder normal in einer Konsole ausgeben oder was du willst

(SHOW_ERROR in dem Bsp. verwendet um, wie gesagt, kannst dann selber aussuchen wie du dein "Result" dann ausgibst)


Edit 1: Prüf deine Pointer, villt. ist einer von dennen ein NULL Pointer und failt deswegen. (Am Anfang die Pointer immer am besten initialisieren)
XxharCs is offline  
Thanks
1 User
Old 10/29/2013, 15:56   #5


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Liegt auf jeden Fall nicht an der Funktion, die MessageBox wird mir nichtmals angezeigt.

Dafür liefert der VS Debugger aber was brauchbares:

Code:
-		this	0xcdcdcdcd {m_SwapChain=??? m_Device=??? m_DeviceContext=??? }	CD3D *
		m_SwapChain	<Speicher kann nicht gelesen werden>	
		m_Device	<Speicher kann nicht gelesen werden>	
		m_DeviceContext	<Speicher kann nicht gelesen werden>
Alle 3 Variablen sind Pointer die als private im Header deklariert wurden und im Konstruktor der Klasse mit 0 initialisiert wurden. Warum wird der Zugriff nun verweigert?

Edit: Vergess das oben, ich habe vergessen das Objekt der Klasse auch auf dem Heap zu erstellen, somit waren die Variablen auch nicht initialisiert.

Allerdings gibt es jetzt nochmal ein Problem bei der Shutdown Methode, die gibt mir nämlich auch ne Exception wenn ich das Fenster schließe.

Code:
void CD3D::Shutdown()
{
	m_SwapChain->Release();
	delete m_SwapChain;
	m_SwapChain = 0;

	m_Device->Release();
	delete m_Device;
	m_Device = 0;

	m_DeviceContext->Release();
	delete m_DeviceContext;
	m_DeviceContext = 0;
}
Exception:
Unbehandelte Ausnahme bei 0x00F299ED in DirectX.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000

Debugger meint:
__vfptr <Speicher kann nicht gelesen werden> void * *

Also wieder mal ein (eventuell nicht initialisierter) Pointer, musste mich erstmal durch 4-5 Unterklassen drängeln bis ich da dran kam.
Mostey is offline  
Old 10/29/2013, 16:15   #6
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
Quote:
Originally Posted by Mostey View Post
Edit: Vergess das oben, ich habe vergessen das Objekt der Klasse auch auf dem Heap zu erstellen, somit waren die Variablen auch nicht initialisiert.

Allerdings gibt es jetzt nochmal ein Problem bei der Shutdown Methode, die gibt mir nämlich auch ne Exception wenn ich das Fenster schließe.

Code:
void CD3D::Shutdown()
{
	m_SwapChain->Release();
	delete m_SwapChain;
	m_SwapChain = 0;

	m_Device->Release();
	delete m_Device;
	m_Device = 0;

	m_DeviceContext->Release();
	delete m_DeviceContext;
	m_DeviceContext = 0;
}
Exception:
Unbehandelte Ausnahme bei 0x00F299ED in DirectX.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000

Debugger meint:
__vfptr <Speicher kann nicht gelesen werden> void * *

Also wieder mal ein (eventuell nicht initialisierter) Pointer, musste mich erstmal durch 4-5 Unterklassen drängeln bis ich da dran kam.

Es genügt nur das variable->Release(); soweit ich es noch weiß.
Code:
void CD3D::Shutdown()
{
    m_SwapChain->Release();

    m_Device->Release();

    m_DeviceContext->Release();
}
XxharCs is offline  
Thanks
1 User
Old 10/29/2013, 16:20   #7



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,082
Received Thanks: 1,000
Code:
#define SAFE_RELEASE(p) if(p) { p->Release(); p = NULL; }

void CD3D::Shutdown()
{
    SAFE_RELEASE(m_SwapChain);
    SAFE_RELEASE(m_Device);
    SAFE_RELEASE(m_DeviceContext);
}
+Yazzn is offline  
Thanks
1 User
Old 10/29/2013, 16:30   #8


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by Yazzn (: View Post
Code:
#define SAFE_RELEASE(p) if(p) { p->Release(); p = NULL; }

void CD3D::Shutdown()
{
    SAFE_RELEASE(m_SwapChain);
    SAFE_RELEASE(m_Device);
    SAFE_RELEASE(m_DeviceContext);
}
Danke, hatte angenommen dass der Check bereits in der Funktion vorhanden ist. Läuft nun sauber.
Mostey is offline  
Reply


Similar Threads Similar Threads
Was Werbung im TV verursacht
09/18/2013 - Off Topic - 6 Replies
Ja da viele vielleicht gar nicht wissen was so passiert, wenn man im TV erwähnt bzw Interviewt oder Sonstiges wird kann ich euch mal an unserer Facebookpage zeigen. Ich und mein Team, dass vorweg führen die größten Pages/Shops/Bewegungen über Cannabis. Gestern waren wir im TV in der USA (Deutschland kommt am Freitag, Sender kann ich euch auch sagen wer Bock hat :D) epvpImg: *nomnomnom*, we eat your images. Das Bildchen vorweg, vielleicht interessierts nicht jeden, aber es ist schon...
AAA-12 verursacht Laggs.
09/02/2013 - Wolfteam - 11 Replies
Hallo Freunde :) Ich habe seit neuestem mega Laggs bei AAA-12 Uzas und co Ihr kennt das ja wenn die Gegner nach dem Kampf hemmungslos auf die Leiche ballern,falls sie dies mit Autoshotguns (AAA/Uzas etc) tun verursacht dies massive Laggs. Auch nach mehrmaligen Bitten dieses sinnlose Afterballern zu unterlassen machen sie weiter,es ging sogar schonma soweit das ein Kickvote wegen schlechter Internetverbindung eröffnet.. Egal lange Rede kurzer Sinn hattet ihr auch schonma solche Probleme? ...
Was verursacht die laggs?
02/05/2013 - Technical Support - 10 Replies
Moin, ich hab mir mal neulich ne neue Graka besorgt, die Radeon HD 7850, weil ich davon ausging, dass meine vorherige Graka schon recht alt ist und aktuelle titel nicht mal mehr auf niedrigsten einstellungen liefen ;) . soviel dazu. nun habe ich aber immernoch das problem, dass mein pc die spiele nicht flüssig abspielen will. bin darauf zu nem kollegen, hab da die graka eingebaut und sie da : alles läuft flüssig selbst auf einem bildschirm mit sehr hoher auflösung ( glaube 24 zoll oder so...
Modloader verursacht GrafikBug
03/18/2012 - Minecraft - 4 Replies
huhu, ich habe folgendes Problem : Immer, wenn ich Modloader "installier" habe ich Grafikbugs. Sprich Dirt sieht aus wie Stein. Ich brauch Modloader aber für nen Mod Help :/
the exception unknown software exception
02/04/2012 - Archlord - 4 Replies
Hello all!When i start the game i select europe and after says the exception unknown software exception click ok to terminate the program.PLease help me guys to solve this problem1Have a nice day



All times are GMT +1. The time now is 16:56.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.