Direct3D - Fehler -2005530516
-
hallo,
ich habe eine directx anwendung in c# gemacht, die bisher auch wunderbar funktionierte.
jetzt habe ich die 9.0c SDK installiert. (natürlich die 9.0b vorher deinstalliert)
Seither schmeisstdevice = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);immer folgende InvalidCallException (Ausgabe über MessageBox zeigt folgenden Text):
In der Anwendung ist ein Fehler aufgetreten:
-2005530516 (D3DERR_INVALIDCALL)
at Microsoft.DirectX.Direct3D.Device..ctor(Int32 adapter,DeviceType deviceType,Control renderWindow, CreateFlags
behaviorFlags, PresentParameters[] presentationParamteres)
at DeviceTutorial.CreateDevice.InitializeGraphics()Nachdem ich nun natürlich einen Programmierfehler meinerseits suchte, aber bisher nicht fündig wurde, compilierte ich ein sample der directx sdk.
Auch im Sample fliegt die Exception.
Anschliessend habe ich den Grafikkartentreiber upgedated, erfolglos.Hier der Code, der bei mir die Exception fliegen lässt: (Sample aus der SDK)
//----------------------------------------------------------------------------- // File: CreateDevice.cs // // Desc: This is the first tutorial for using Direct3D. In this tutorial, all // we are doing is creating a Direct3D device and using it to clear the // window. // // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- using System; using System.Drawing; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace DeviceTutorial { public class CreateDevice : Form { // Our global variables for this project Device device = null; // Our rendering device public CreateDevice() { // Set the initial size of our form this.ClientSize = new System.Drawing.Size(400,300); // And it's caption this.Text = "D3D Tutorial 01: CreateDevice"; } public bool InitializeGraphics() { try { // Now let's setup our D3D stuff PresentParameters presentParams = new PresentParameters(); presentParams.Windowed=true; presentParams.SwapEffect = SwapEffect.Discard; device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); return true; } catch (DirectXException e) { MessageBox.Show(e.ToString()); return false; } } private void Render() { if (device == null) return; //Clear the backbuffer to a blue color device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0); //Begin the scene device.BeginScene(); // Rendering of scene objects can happen here //End the scene device.EndScene(); device.Present(); } protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { this.Render(); // Render on painting } protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) { if ((int)(byte)e.KeyChar == (int)System.Windows.Forms.Keys.Escape) this.Close(); // Esc was pressed } /// <summary> /// The main entry point for the application. /// </summary> static void Main() { using (CreateDevice frm = new CreateDevice()) { if (!frm.InitializeGraphics()) // Initialize Direct3D { MessageBox.Show("Could not initialize Direct3D. This tutorial will exit."); return; } frm.Show(); // While the form is still valid, render and process messages while(frm.Created) { frm.Render(); Application.DoEvents(); } } } } }Testmässig hab ich dann nochmal die 9.0b SDK draufgespielt, und alles hat wunderbar funktioniert.
Allerdings benötige ich einige Sachen der 9.0c - SDK.Kann mir bitte jemand sagen, was ich machen muss, damit das zeugs auch mit der 9.0c sdk läuft.
Im DXDiag funktioniert auch alles, kann es am System liegen ?????
Bisher wurde ich bei google diesbezüglich auch nicht schlau......system:
athlon 2000 xp+
Asus Geforce4 128MB
DirectX9.0c
VS.NET 2002Kann mir jemand sagen, was ich machen muss, damit das ding wieder funktioniert.
-
Könnte evtl. auch ein Konflikt der DX Bibliothek und dem managed-DX sein. Hast du das mit-geupdated?
Bye, TGGC (Wähle deine Helden)
-
Also, ich hab folgende SDK installiert (sonst nichts):
is so ein 160 MB Teil.
Könnte es sein, dass ich irgendwas vergessen habe ??
ich hab bis jetzt rumgegooglet, das problem scheinen richtig viele leute zu haben.
ich hab auch ein paar sachen gefunden, die ich erfolglos ausprobiert habe.- refreshrate auf 0, wenn windowed,
- backbufferformat an das des adapters angleichen,
- den konstruktor mit verschiedenen parametern aufrufen
-
Zur Info: (falls jemand anders mal das Problem haben sollte)
Ich habe meinen Quellcode nun mit Visual Studio 2003 compiliert - dann funktionierts !
(..... und als Crosscheck noch mal mit VS2002 compiliert..... dann geht wieder voll die Exception ab !!)Warum ? das weiss wahrscheinlich nur MS allein....... oder auch nicht....