2013-12-06 3 views
6

Возможно ли получить что-то нарисованное с помощью методов рисования по умолчанию .net (методы System.Drawing) для объекта SharpDX Texture2D, чтобы я мог отображать его как текстуру? Рекомендуется с помощью инструментария SharpDX Toolkit.SharpDX - совместимость с System.Drawing

Если да, то как?

редактировать: что я пытаюсь до сих пор:

Bitmap b = new Bitmap(100,100); 
MemoryStream ms = new MemoryStream(); 
b.Save(ms, System.Drawing.Imaging.ImageFormat.Png);  
Texture2D tex = Texture2D.Load(g.device, ms); // crashing here 
ms.Close(); 
+0

Просто используйте метод FromStream(). Это позволяет создавать текстуру из растрового изображения, сохраненного в MemoryStream. –

+0

Хорошая идея, поэтому я пытаюсь записать ее в запоминающее устройство следующим образом: 'bitmap.Save (ms, System.Drawing.Imaging.ImageFormat.Png)', но затем sharpdx думает о своем DDS и не работает при загрузке. – clamp

+0

Вы забыли ms.Position = 0; перед вызовом Load(). –

ответ

5
b.Save(ms, System.Drawing.Imaging.ImageFormat.Png);  
    Texture2D tex = Texture2D.Load(g.device, ms); 

Сохранить() вызов покидает поток памяти, расположенный в конце потока. Это будет конфликтовать с методом Load(), он не сможет прочитать данные из потока. Вам придется перематывать поток явно. Вставьте это заявление между двумя строками кода:

ms.Position = 0;