Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: преобразование данных Добавлено: 19.04.08 23:24  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
не могу разобраться с одним моментом. есть исходник на C# + XNA переписываю на VB.NET + DirectX. Вот кусок:


Texture2D defLt = new Texture2D(graphicsDevice, 2, 2, 1, ResourceUsage.None, SurfaceFormat.Color, ResourceManagementMode.Manual);
uint[] ltData = new uint[2 * 2];
for (int l = 0; l < ltData.Lenght; l++)
{
   ltData[l] = 0xFF7F7F7F;
}
defLt.SetData<uint>(ltData);


переписанное:

Dim defLt as Texture = new Texture(graphicsDevice, 2, 2, 1, Usage.None, Format.A8R8G8B8, Pool.Default)
Dim ltData(2 * 2 -1) as UInteger
For l as Integer = 0 to ltData.Length - 1
   ltData(l) = 4286545791
Next
defLt.SetPrivateData(Guid.NewGuid, Array.ConvertAll(ltData, New System.Converter(Of UInteger, Byte)(AddressOf Uint2Byte)))

Private Function Uint2Byte(ByVal arr As UInteger) As Byte
   Return Convert.ToByte(arr)
End Function


проблема в том что в директиксе нельзя засунуть uint в данные текстуры, а только массив байтов. Поэтому я конверчу в байты, но число 4286545791 сильно здоровое и он говорит, что не может его конвертить. Может кто-нибудь знает что тут нужно сделать?

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 19.04.08 23:43
думаю по логике нужно сделать так? или нет?

Dim ltData__(0) as Byte
For l As Integer = 0 To ltData.Length - 1
   Dim arr() As Byte = BitConverter.GetBytes(ltData(l))
   For i As Integer = 0 To arr.Length - 1
      ltData__(i) = arr(i)
      ReDim Preserve ltData__(ltData.Length)
   Next
Next
ReDim Preserve ltData__(ltData__.Length - 2)
defLt.SetPrivateData(Guid.NewGuid, ltData__)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам