Страница: 1 |
Страница: 1 |
Вопрос: преобразование данных
Добавлено: 19.04.08 23:24
Автор вопроса: Skywalker | Web-сайт:
не могу разобраться с одним моментом. есть исходник на 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-сайт:
Профиль | | #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__)