View Full Version : [C# & DirectX] Tesina sulle DirectX finita
Radeon89
31-05-2008, 16:19
Finalmente ho terminato questa tesina che mi è costata un bel po' di tempo, ma mi sento soddisfatto... Non ho realizzato un gioco come pensavo inizialmente (http://www.hwupgrade.it/forum/showthread.php?t=1627338) ma un programma che vuole mostrare le caratteristiche di base delle DirectX e qualche sua potenzialità...
Il programma è pronto ma ci sarebbe forse qualcosina da sistemare, tipo le form che durante il calcolo delle funzioni in due variabili non vengono mai refreshate (dato che il calcolo lo faccio sul thread principale per comodità) e quindi "gli rimangono sopra" tutte le finestre che apro sopra il programma. Ma tanto avrò solo quel programma aperto alla maturità :fagiano:
Ringrazio vivamente chiunque mi ha dato una mano rispondendo alle mie domande e i pochi che mi hanno dato sostegno morale!
E, ovviamente, se volete vederla e fare un po' di test, ecco la mia tesina (http://xoomer.alice.it/riccardo89/)
:D :D :D
Ah, dato che è C#, c'è ovviamente bisogno del .net framework...:read:
EDIT: un'ultima cosa, chiunque trovi qualche problema è pregato di farmelo sapere segnalandomi le condizioni in cui si è verificato l'errore ;)
(prima che chiudano il thread :asd: )
complimenti :p
Radeon89
31-05-2008, 16:38
(prima che chiudano il thread :asd: )
complimenti :p
E perché dovrebbero chiuderlo??
Se ho fatto qualcosa di sbagliato scusate ma non lo sapevo...:(
wizard_at
31-05-2008, 16:39
(prima che chiudano il thread :asd: )
complimenti :p
quoto!
di sbagliato nulla. pero' non chiedi nulla. non c'e' possibilita' di risponderti.
ti possiamo dire tutti solo bravo!
PS:il link non funziona
Radeon89
31-05-2008, 16:51
quoto!
di sbagliato nulla. pero' non chiedi nulla. non c'e' possibilita' di risponderti.
ti possiamo dire tutti solo bravo!
PS:il link non funziona
Scusate avevo sbagliato, comunque ora il link funziona... Avevo messo il link diretto ma non va, quindi bisogna passare dalla "mia pagina web" XD
Per il chiedere, beh, mi sembrava scontato, comunque vorrei sapere se secondo voi c'è da sistemare qualche problema (magari qualche errore critico in qualche particolare situazione:eek: ), se dovrei migliorare qualche particolare e se le funzioni in due variabili vengono rappresentate correttamente (non si sa mai!) Insomma... Un po' di beta testing se potete e volete
wizard_at
31-05-2008, 18:16
ti aiuterei volentieri ma...Linux
E perché dovrebbero chiuderlo??
be', un thread in cui arrivi e a suon di fanfare annunci "audite genteh!! ho compiuto la mia impresahh!! grazie per il vostro grandioso supporto, un bacio tutte le mie ammiratricih!!" :D :D
variabilepippo
31-05-2008, 18:31
Su Vista il programma crasha all'avvio con il messaggio: "CarEngine ha smesso di funzionare". :eek:
wizard_at
31-05-2008, 18:31
be', un thread in cui arrivi e a suon di fanfare annunci "audite genteh!! ho compiuto la mia impresahh!! grazie per il vostro grandioso supporto, un bacio tutte le mie ammiratricih!!" :D :D
poi i moderatori sono cattivi!:D ....scherzo:fagiano:
si potrebbe mettere questo progetto in tutorial/faq/guide o come si chiama per mostrare come funziona il tutto e qualisono le potenzialita'(se vuoi)...altrimenti nulla
Radeon89
31-05-2008, 21:34
Su Vista il programma crasha all'avvio con il messaggio: "CarEngine ha smesso di funzionare". :eek:
Strano, un mio amico ha Vista e a lui funziona bene... Forse potrebbe dipendere dal tipo di scheda video ma non credo... Funziona anche con un portatile che VGA intel integrata. Comunque ho notato una cosa, non utilizzate il collegamento per farlo partire ma cliccate direttamente sull'eseguibile nella cartella Release, altrimenti quando deve aprire dei file (scena del terreno) dà errore, non so perché...
EDIT: lo toglierò il collegamento dal file che c'è su Internet, ma non ora, non ho tempo
Antares88
01-06-2008, 01:09
stavo facendo rotazione da tastiera del cubo wireframe e mi ha sparato st'errore:
http://img135.imageshack.us/img135/8453/errorecj7.th.jpg (http://img135.imageshack.us/my.php?image=errorecj7.jpg)
Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra
sono riportate in fondo al messaggio.
************** Testo dell'eccezione **************
System.AccessViolationException: Tentativo di lettura o scrittura della memoria protetta. Spesso questa condizione indica che altre parti della memoria sono danneggiate.
in Microsoft.DirectX.Direct3D.Device.DrawIndexedPrimitives(PrimitiveType primitiveType, Int32 baseVertex, Int32 minVertexIndex, Int32 numVertices, Int32 startIndex, Int32 primCount)
in CarEngine.Form1.Form1_Paint(Object sender, PaintEventArgs e) in C:\Documents and Settings\Ricky\Documenti\I miei programmi\C#\DirectX\CarEngine\CarEngine\Form1.cs:riga 685
in System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
in System.Windows.Forms.Form.OnPaint(PaintEventArgs e)
in System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
in System.Windows.Forms.Control.WmPaint(Message& m)
in System.Windows.Forms.Control.WndProc(Message& m)
in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
in System.Windows.Forms.ContainerControl.WndProc(Message& m)
in System.Windows.Forms.Form.WndProc(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Assembly caricati **************
mscorlib
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
CarEngine
Versione assembly: 1.0.0.0
Versione Win32: 1.0.0.0
Base di codice: file:///C:/Documents%20and%20Settings/Anta/Desktop/Tesina%20DirectX/Release/CarEngine.exe
----------------------------------------
System.Windows.Forms
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.DirectX.Direct3D
Versione assembly: 1.0.2902.0
Versione Win32: 9.05.132.0000
Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
----------------------------------------
Microsoft.DirectX
Versione assembly: 1.0.2902.0
Versione Win32: 5.04.00.2904
Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.dll
----------------------------------------
Microsoft.DirectX.Direct3DX
Versione assembly: 1.0.2911.0
Versione Win32: 9.12.589.0000
Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2911.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
----------------------------------------
Microsoft.DirectX.DirectInput
Versione assembly: 1.0.2902.0
Versione Win32: 5.04.00.2904
Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.DirectInput/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectInput.dll
----------------------------------------
Microsoft.VisualC
Versione assembly: 8.0.0.0
Versione Win32: 8.00.50727.1433
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualC/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualC.dll
----------------------------------------
Accessibility
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
mscorlib.resources
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
Versione assembly: 2.0.0.0
Versione Win32: 2.0.50727.42 (RTM.050727-4200)
Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
************** Debug JIT **************
Per attivare il debug JIT, è necessario impostare il valore
jitDebugging nella sezione system.windows.forms del file di configurazione
dell'applicazione o del computer (machine.config).
L'applicazione inoltre deve essere compilata con il debug
attivato.
Ad esempio:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
Quando il debug JIT è attivato, tutte le eccezioni non gestite
vengono inviate al debugger JIT registrato nel computer,
anziché essere gestite da questa finestra di dialogo.
Radeon89
01-06-2008, 13:20
stavo facendo rotazione da tastiera del cubo wireframe e mi ha sparato st'errore:
http://img135.imageshack.us/img135/8453/errorecj7.th.jpg (http://img135.imageshack.us/my.php?image=errorecj7.jpg)
Fixato, ora sul sito è disponibile la nuova versione senza quel problema (e ho tolto il collegamento che non funziona). Il motivo del problema era questo: quando si clicca sulla form contenente i radio button per la scelta della visualizzazione del cubo, quella form rimane selezionata. Quindi utilizzando i tasti freccia inavvertitamente oltre ad iniziare a muovere il cubo si continuano a spostare anche le varie selezioni nella form di gestione del cubo (e quindi anche l'attivazione/disattivazione del controllo da tastiera). Questo comporta problemi di protezione con alcune variabili (il mio programma non presenta semafori, per semplicità di programmazione). Comunque il tutto si risolve facendo un Focus() sulla form delle DirectX dopo aver selezionato qualcosa nella form di gestione del cubo :D
Grazie della segnalazione! A dire il vero lo conoscevo già questo problema, però me n'ero dimenticato:rolleyes:
DanieleC88
01-06-2008, 17:09
Complimenti! Sarebbe piaciuto anche a me fare qualcosa del genere da portare alla maturità, ma avendo studiato al classico ho dovuto ripiegare su qualcosa di molto più... "classico", per l'appunto. :stordita: :D
ciao ;)
Radeon89
02-06-2008, 23:35
Ho sistemato un altro problema che c'era con le coordinate delle luci, ora le direzioni degli assi, se viene impostata la direzione della luce manualmente, sono giuste. Quindi la x orizzontale (crescente verso destra), la y in profondità (cresente "a entrare nello schermo") la z verticale (crescente a salire)
banryu79
03-06-2008, 11:59
Bho, io ho scaricato e scompattato la cartella Release ma quando lancio CarEngine.exe mi parte il JIT (perchè ho installato Visual Studio 2003) che segnala un'eccezione System.IO.FileNotFoundException...
variabilepippo
03-06-2008, 13:10
Bho, io ho scaricato e scompattato la cartella Release ma quando lancio CarEngine.exe mi parte il JIT (perchè ho installato Visual Studio 2003) che segnala un'eccezione System.IO.FileNotFoundException...
Confermo, anche sul mio sistema viene sollevata un'eccezione FileNotFoundException in fase di avvio:
{"Impossibile caricare il file o l'assembly 'Microsoft.DirectX.Direct3DX, Version=1.0.2911.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una delle relative dipendenze. Impossibile trovare il file specificato.":"Microsoft.DirectX.Direct3DX, Version=1.0.2911.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"}
Quale versione del DirectX redistributable utilizzi?
Radeon89
05-06-2008, 17:44
Ad un mio amico che ha Windows Vista funziona, forse perché lui ha installato l'sdk? Boh... Comunque da dove la vedo la versione redistributable delle DirectX? Sarà una delle ultime comunque...
variabilepippo
05-06-2008, 17:53
Vedi nella cartella c:\Windows\Microsoft.NET\DirectX for Managed Code\, dovresti avere una sottocartella chiamata 1.0.2911.0, giusto?
Radeon89
05-06-2008, 17:57
Sì, tutte le altre hanno numeri minori
variabilepippo
05-06-2008, 18:35
Sì, tutte le altre hanno numeri minori
Nel mio caso tali numeri (http://www.thezbuffer.com/articles/386.aspx) vanno da 1.0.2902.0 a 1.0.2910.0, ecco perché si verifica il malfunzionamento.
Radeon89
05-06-2008, 18:40
Cioè dovresti aggiornare le DirectX?
variabilepippo
05-06-2008, 18:46
Cioè dovresti aggiornare le DirectX?
Esatto, dovrei installare una versione recente del runtime DirectX per far funzionare il tuo programma.
Radeon89
06-06-2008, 21:36
Programma aggiornato, ho sistemato qualche altro problema e fatto comparire una messageBox che avverte di attendere quando si fa partire la scena delle funzioni in due variabili. Infatti dopo aver visualizzato per la prima volta una funzione, e cambiato scena, tornando alle funzioni in due variabili la vecchia funzione viene ricalcolata (e non ho voglia di modificare troppo codice per ricreare la scena vuota :D ).
Ah, e poi ho sistemato un po' meglio l'organizzazione in livelli: interfacce che usano classi business e queste ultime che usano l'accesso dati (in teoria:Prrr: ). Anche se ho notato che per un'applicazione 3d le regole sono un po' diverse...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.