[ bobby63 @ 20.04.2010. 22:58 ] @
Radim jednu jednostavnu managed DirectX (3D) aplikaciju. Osim 3D geometrije koja je vrlo prosta ima i dosta sprajtova.

Na mom racunaru sa Ati grafickom (4850) i na Netbooku (n450, GMA 3150) aplikacija radi super, zauzeće processora za komp je do 10% a za netbook do 30%.

Problem je što program treba da se izvršava na pločama sa integrisanom nVidia grafikom(GeForce 8200) a na njima radi očajno. Zauzece processora je uvek 100%(čak i kada stavim samo 3D ili samo sprajtve) i program se non stop koči i prekida.

Da bih dobio glatku animaciju i rasteretio processor koristio sam
Code:
D3Dpp.PresentationInterval = PresentInterval.one
Takodje sam pokušavao i sa "PresentInterval.Default", "PresentInterval.Immediate" i vremenskom petljom i sve varijante rade super na gore pomenutim racunarima ali ne rade nikako na nVidija chipsetu.

Ostatak inicijalizacije je:
Code:
D3Dpp.SwapEffect = SwapEffect.Discard
D3Dpp.EnableAutoDepthStencil = True
D3Dpp.AutoDepthStencilFormat = DepthFormat.D16
D3Ddev = New Direct3D.Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, TargetForm.Handle, 
Direct3D.CreateFlags.SoftwareVertexProcessing, D3Dpp)            //isto je i sa HardwareVertexProcessing

D3Ddev.Transform.View = Matrix.LookAtLH(CameraPosition, CharacterPosition, New Vector3(0, 1, 0))
D3Ddev.Transform.Projection = Matrix.PerspectiveFovLH(Math.PI / 4, 1280 / 1024, 1.0F, 300.0F)
D3Ddev.RenderState.ZBufferEnable = False
D3Ddev.RenderState.FillMode = FillMode.Solid
D3Ddev.SamplerState(0).MinFilter = TextureFilter.Point
D3Ddev.SamplerState(0).MagFilter = TextureFilter.Linear
ostalo je nebitno.

Pošto je AMD processor na toj ploči mnogo jači a pretpostavljam i da je integrisana 8200 jača od Atom grafike, šta bi to moglo toliko da koči moj program na NVidia grafici?

Pozdrav svima i unapred hvala.
[ bobby63 @ 21.04.2010. 21:53 ] @
U full screen modu radi bitno bolje, skoro da moze da prodje, mada bi meni trebalo da radi dobro u windowed.
[ Filip Strugar @ 24.04.2010. 19:02 ] @
Cudno! Jesi probao da uzmes neki DirectX Sample (koji moze da radi na njima) i da ga startujes na sve tri platforme i da uporedis performanse. Sta dobijas kao rezultat? Ne bi trebalo da je 8200 toliko sporija ali nikad se ne zna. Ako je hardver koji koristis iz nekog razloga pokvaren (ili su losi drajveri ili nesto slicno) to bi moralo da se vidi i na drugim aplikacijama.

U slucaju da ti DirectX Samples rade ok, onda je verovatno problem u necemu sto ti radis: mozda se grafickoj/drajverima ne svidja DepthStencilFormat ili neki drugi parametar.
U tom slucaju mi ne pada na pamet ni jedan drugi nacin da provalis sta je problem osim da krenes i modifikujes svoju aplikaciju korak po korak u pravcu nekog od njih, dok ne proradi (ili obrnuto, modifikujes DirectX Sample dok prestane da radi kako treba).

Nisam od neke pomoci, sorry :)