2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Загрузка текстур.
Сообщение20.06.2011, 02:28 
Аватара пользователя
Нужно сделать текстуру из картинки, которая редактируется во время работы программы, используя SlimDX. последовательность действий такая: загрузить картинку -> отредактировать её -> сделать из неё текстуру. В Managed DirectX у класса Texture был метод FromBitmap. И код выглядел так
Используется синтаксис C#
Bitmap Pic = new Bitmap(...);
// Некоторые действия с Pic
Texture txr = Texture.FromBitmap(...,Pic,...);

Проблема в том, что в SlimDX нет аналога Texture.FromBitmap из Managed DirectX.
зато есть:
код: [ скачать ] [ спрятать ]
Используется синтаксис C#
 FromFile(Device, String)// Loads a texture from file.
 FromFile(Device, String, Usage, Pool);
 FromFile(Device, String, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32) ;
 FromFile(Device, String, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32, ImageInformation);  
 FromFile(Device, String, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32, ImageInformation, arrayPaletteEntry[]);
 
 FromMemory(Device, array Byte[]) //Creates a texture from a specified block of memory.
 FromMemory(Device, array Byte[], Usage, Pool);
 FromMemory(Device, array Byte[], Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32);  
 FromMemory(Device, array Byte[], Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32,
         ImageInformation);
 FromMemory(Device, array Byte[], Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32, ImageInformation%, array PaletteEntry[])  
 
 FromPointer(IntPtr)
 
 FromStream(Device, Stream); //Creates a texture from a stream.
 FromStream(Device, Stream, Usage, Pool);
 FromStream(Device, Stream, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32);
 FromStream(Device, Stream, Int32, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32)
 FromStream(Device, Stream, Int32, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32,  
          ImageInformation)
 FromStream(Device, Stream, Int32, Int32, Int32, Int32, Usage, Format, Pool, Filter, Filter, Int32,
          ImageInformation, array PaletteEntry[])
 
Нельзя что-нибудь придумать используя эти методы? У меня есть идея сохранять изображение после редактирования на жёсткий диск, а потом использовать FromFile(), но она мне не нравится.

 
 
 
 Re: Загрузка текстур.
Сообщение20.06.2011, 06:41 
Почему бы не использовать FromMemory, FromStream?

 
 
 
 Re: Загрузка текстур.
Сообщение20.06.2011, 13:35 
Аватара пользователя
А как загнать картинку в поток, или получить её адрес в памяти?

 
 
 
 Re: Загрузка текстур.
Сообщение20.06.2011, 13:48 
судя по документации Bitmap http://msdn.microsoft.com/ru-ru/library ... .aspx#Y171 методом Save.

 
 
 
 Re: Загрузка текстур.
Сообщение22.06.2011, 15:53 
Аватара пользователя
FromStream() отказался работать на отрез - код
Используется синтаксис C#
MemoryStream st = new MemoryStream();
Texture txr = Texture.FromStream(device, st);
ругался, что индекс находится за границами массива.
Нашёл другой способ:
Используется синтаксис C#
byte[] buffer = st.ToArray();
txr = Texture.FromMemory(device, buffer);

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group