Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - DirectX for VB-NET
Forum - C# / VB.NET - DirectX for VB-NET

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 18:17
Sabato, 03/10/2009
Io gli ultimi giorni mi sono cimentato nel utilizzo delle directX... e quindi goglando ho trovato questo tutorial :
http://www.riemers.net/eng/Tutorials/DirectX/Visual_Basic/ ...

dopo averlo letto accuratamente a svolto alla lettera... nel form... invece del ficissimo triangolo multicolore... c'e un "x" rosso che attraversa tutto il form... rualcuno sapreebbe dirmi perche e darmi eventuali spieghazioni??? Grazie...


xx    xx xxxxxxx    xxxxx
xx    xx xx    xx  xx
xx  xx  xxxxxxx  xxxxxxx
  xxxx   xx    xx xx    xx
   xx    xxxxxxx   xxxxxx  
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6185
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:22
Sabato, 03/10/2009
Le Managed DirectX sono obsolete; usa XNA.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 23:34
Sabato, 03/10/2009
In...pratica... ??? devo cambiare tutto il codice... cosa sone le XNA??? dove troco dei tutorial??

cmq torniamo alla domanda iniziale... qualcuna sa dirmi xke le directx reagiscono così??


xx    xx xxxxxxx    xxxxx
xx    xx xx    xx  xx
xx  xx  xxxxxxx  xxxxxxx
  xxxx   xx    xx xx    xx
   xx    xxxxxxx   xxxxxx  
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:59
Domenica, 04/10/2009
Mi sa che devi farti aggiustare le diottrie, perchè proprio nella pagina che hai linkato c'è scritto in grosso e rosso, a fianco, "XNA Recipe Book".
Inoltre non puoi pretendere che qualcuno ti dica cosa c'è che non va se non posti nemmeno uno straccio di codice.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 13:21
Domenica, 04/10/2009
è qui che ti sbagli... il codice e perfettamente quello dell link... cmq voi mo consiglate di usare l XNA invece elle directX ???


xx    xx xxxxxxx    xxxxx
xx    xx xx    xx  xx
xx  xx  xxxxxxx  xxxxxxx
  xxxx   xx    xx xx    xx
   xx    xxxxxxx   xxxxxx  
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:02
Lunedì, 05/10/2009
Testo quotato

Postato originariamente da marco1:

è qui che ti sbagli... il codice e perfettamente quello dell link... cmq voi mo consiglate di usare l XNA invece elle directX ???



credo che la risposta sia un paio di post sopra...


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1845
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:55
Lunedì, 05/10/2009
Ti consiglio xna, ma cmq
da quel che vedo nel link non usa xna,
ma usa direttamente le directx native.


Codice sorgente - presumibilmente C# / VB.NET

  1. Imports Microsoft.DirectX
  2. Imports Microsoft.DirectX.Direct3D



e appunto come dicevo infatti.
per far funzionare il tutto devi crearti un metodo che inizializza lo schermo,
ed esegue il loop per ripulirlo.

se stai usando questi riferimenti prova qui
www.notjustcode.it
guarda alla sezione DirectX 9

e trovi appunto i sorgenti.

XNA ha un framework suo e non su xna dirette
del tipo

mentre su xna si usano riferimenti apposta

Codice sorgente - presumibilmente C++

  1. using Microsoft.Xna.Framework;
  2.  using Microsoft.Xna.Framework.Audio;
  3.  using Microsoft.Xna.Framework.Content;
  4.  using Microsoft.Xna.Framework.GamerServices;
  5.  using Microsoft.Xna.Framework.Graphics;
  6.  using Microsoft.Xna.Framework.Input;
  7.  using Microsoft.Xna.Framework.Net;
  8.  using Microsoft.Xna.Framework.Storage;



semplicemente non puoi usare frammenti del Framework XNA usando riferimenti DirectX
cambiano alcune cosette ma il succo e sempre quello alla fine.


PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 17:48
Giovedì, 08/10/2009
Analizzando il codice ho scoperto delle cose strane... l'esecuzione funziona in modo strano...

Codice sorgente - presumibilmente VB.NET

  1. Imports Microsoft.DirectX
  2. Imports Microsoft.DirectX.Direct3D
  3.  
  4.  
  5.  
  6. Public Class Form1
  7.     Private device As Direct3D.Device
  8.     Public Sub Initialize()
  9.         Dim present As PresentParameters = New PresentParameters
  10.         present.Windowed = True 'we?ll draw on a window
  11.         present.SwapEffect = SwapEffect.Discard 'discuss later
  12.         device = New Direct3D.Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, present)
  13.     End Sub
  14.  
  15.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  16.         Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True) 'Do not draw form?s background\
  17.         Me.Height = 500
  18.         Me.Width = 500
  19.         Me.Text = "DirectX Tutorial using Visual Basic"
  20.  
  21.         Initialize()
  22.  
  23.         '!!!! Tutto il codice che mettto qui sotto non viene eseguito.
  24.         '!!!! Se invece di "Initialize()" metto direttamente il codice che sta dentro    
  25.         '!!!! alla funzione non viene eseguito niente del evnto.
  26.     End Sub
  27.  
  28.     Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  29.         Dim vertices As CustomVertex.TransformedColored() = New CustomVertex.TransformedColored(0 To 2) {} 'create an array of vertices
  30.         vertices(0).Position = New Vector4(150, 100, 0, 1)
  31.         vertices(0).Color = Color.Red.ToArgb 'encode color in Argb
  32.         vertices(1).Position = New Vector4(Me.Width / 2 + 100, 100, 0, 1)
  33.         vertices(1).Color = Color.Green.ToArgb
  34.         vertices(2).Position = New Vector4(250, 300, 0, 1)
  35.         vertices(2).Color = Color.Yellow.ToArgb
  36.  
  37.         device.Clear(ClearFlags.Target, Color.Black, 1.0, 0)
  38.  
  39.         device.BeginScene() 'all drawings after this line
  40.         device.VertexFormat = CustomVertex.TransformedColored.Format
  41.         device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices)
  42.         device.EndScene() 'all drawings before this line
  43.  
  44.         device.Present()
  45.         Me.Invalidate() 'redraw
  46.     End Sub
  47. End Class



Quella stranezza nel Form_Load e solo la prima... poi l'evento Form_Paint non viene generato mai.... e se sposto il codice di Form_Paint in Form_Click per provare ad avviarlo con un click... quando clikko mi da un errore: Aplicazione Win32 nin valida...


xx    xx xxxxxxx    xxxxx
xx    xx xx    xx  xx
xx  xx  xxxxxxx  xxxxxxx
  xxxx   xx    xx xx    xx
   xx    xxxxxxx   xxxxxx  
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1845
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 1:11
Venerdì, 09/10/2009
E orribile quel sorgente!
ovunque tu abbia preso questa guida ti consiglio di abbandonarla all'istante,
e incredibilmente piena di errori dall'inizio alla fine

Gia partendo da qui

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  2.         Dim vertices As CustomVertex.TransformedColored() = New CustomVertex.TransformedColored(0 To 2) {} 'create an array of vertices
  3.         vertices(0).Position = New Vector4(150, 100, 0, 1)
  4.         vertices(0).Color = Color.Red.ToArgb 'encode color In Argb
  5.         vertices(1).Position = New Vector4(Me.Width / 2 + 100, 100, 0, 1)
  6.         vertices(1).Color = Color.Green.ToArgb
  7.         vertices(2).Position = New Vector4(250, 300, 0, 1)
  8.         vertices(2).Color = Color.Yellow.ToArgb
  9.  
  10.         device.Clear(ClearFlags.Target, Color.Black, 1.0, 0)
  11.  
  12.         device.BeginScene() 'all drawings after this line
  13.         device.VertexFormat = CustomVertex.TransformedColored.Format
  14.         device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices)
  15.         device.EndScene() 'all drawings before this line
  16.  
  17.         device.Present()
  18.         Me.Invalidate() 'redraw
  19.     End Sub




E completamente tutto Sbagliato.
Tenti di eseguire un loop al Form_Paint cosa assolutamente da evitare
in più, Ha mancato il loop del rendering,
in pratica aggiornerebbe solo una volta.


Il medoto giusto sarebbe questo

Codice sorgente - presumibilmente VB.NET

  1. Dim vertices As CustomVertex.TransformedColored() = New CustomVertex.TransformedColored(0 To 2) {} 'create an array of vertices
  2.         vertices(0).Position = New Vector4(150, 100, 0, 1)
  3.         vertices(0).Color = Color.Red.ToArgb 'encode color In Argb
  4.         vertices(1).Position = New Vector4(Me.Width / 2 + 100, 100, 0, 1)
  5.         vertices(1).Color = Color.Green.ToArgb
  6.         vertices(2).Position = New Vector4(250, 300, 0, 1)
  7.         vertices(2).Color = Color.Yellow.ToArgb
  8.  
  9. do
  10.         ' Preparo il Rendering
  11.         device.Clear(ClearFlags.Target, Color.Black, 1.0, 0)
  12.         device.BeginScene() 'all drawings after this line
  13.  
  14.  
  15.         'Rendering degli oggetti di scena
  16.         device.VertexFormat = CustomVertex.TransformedColored.Format
  17.         device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices)
  18.  
  19.  
  20.         'Mostra allo schermo il risultato
  21.         device.EndScene() 'all drawings before this line
  22.         device.Present()
  23.  
  24. loop



cmq torno a ripeterti, ti conviene andare qui
www.notjustcode.it Sezione DirectX 9.

Impara da li...


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo