2012-09-25 9 views
8

WPF kullanarak basit bir ışın izi yazmak istiyorum. Bu bir öğrenme projesidir ve bu yüzden performans üzerinde yapılandırılabilirliği tercih ederim (aksi takdirde C++ için giderdim).WPF'de hızlı piksel çizimi

Hala nispeten hızlı piksel çizimi istiyorum. StackOverflow üzerindeki bir previous question, bir GDI bitmap'i elde ederek bunu WPF'de gerçekleştirmek için kod içerir. nispeten az itibaren

  1. GDI yavaş
  2. DirectX olduğu Windows programlama hakkında bilmek hızlı
  3. WPF altında DirectX kullanan (emin değil olsa hangi WPF parçaları)

mümkün mü WPF Canvas (veya benzeri) üzerinden DirectX (GDI değil) kullanarak piksel seviyesinde erişim elde etmek için?

Ayrıca, mümkün olduğunda bir WPF penceresinde (diğer WPF denetimlerinin yanında) DirectX API çağrıları içeren önerileri de dikkate alacağım.

Şimdiden teşekkürler.

+0

En basit, bir tetrahedron gibi basit bir şey oluşturan ve onu bir png'ye kaydetmek için bir komut satırı uygulaması oluşturmak olacaktır. Bunu aldıktan sonra, raytracer'ın kendisi ile ilgili bir çok problemi çözmüş olacaktınız. Sonra ekrana çizim yapmak için endişelenebilirsiniz. – Indy9000

+0

@Gigi: WPF'deki ekrana doğrudan yazmayı denemenin akıllıca olduğunu düşünmüyorum - buraya bakın: http://blogs.msdn.com/b/greg_schechter/ archive/2006/05/02/588934.aspx – Surfbutler

+2

Bir WritableBitmap kullanmanın iyi bir fikir olduğunu düşünüyorum. – CodesInChaos

cevap

5

İlginç, ama ışınizlemeyle ile ekrana piksel yazma yavaş parçası olmayacaktır (olmalı) olacaktır. Ancak, bu amaçla WriteableBitmap'u kullanabilirsiniz. İstediğin şey için kesinlikle yeterince hızlı. http://0x10c-devkit.com/ - -

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

(bilgi için, bu emu/IDE kullanmak ve düşük çözünürlüklü harika performansı ile görüntülemek yenileyebilirsiniz github depo, LEM1802 eklentisi o kaynak var..

Ah, bu bit: https://github.com/kierenj/0x10c-DevKit/blob/master/PluginAPI/NyaElektriska.LEM1802/GPU.cs - bkz UpdateDisplay.

+0

Geçerli bir puan yükseltiyorsunuz. Sağlanan linklere dayanarak biraz araştırma yapacağım ve muhtemelen bununla gideceğim. – Gigi

+0

Sadece cevabı ile birlikte gitmek için, bu bağlantıyı uygulamamı denerken yardımcı buldum: http://tipsandtricks.runicsoft.com/CSharp/WpfPixelDrawing.html – Gigi

2

Doğrudan bir tuvalete sahip açık kaynak kodlu bir proje var. Donanım hızlandırılmış, vektör grafikleri, multimedya dosyaları, genişletilebilir piksel gölgelendiricileri, karıştırma modları ve daha fazlasını destekleyen 2B çizim API'si.

http://directcanvas.codeplex.com/

Demo http://www.youtube.com/user/jdollah69#p/u

+0

Ritim bir piksel gölgelendiricide yapılmadıkça, bu hiçbir işe yaramaz ve vektör grafikleri, multimedya dosyaları veya karıştırma modları için kesinlikle kullanılmayacaktır. Dude piksel yazmak istiyor, hepsi bu –