новые Texture2D и Texture.SetData будут работать в большинстве случаев, но это приводит к зависанию - PullRequest
0 голосов
/ 22 октября 2019

Это ошибка в моногаме или я делаю что-то не так?

При запуске в задании / потоке. Это приведет к зависанию / зависанию OpenGL. (Отлично работает в DirectX). Хотя это не происходит все время. Мы используем подобный код для создания текстур из необработанных данных изображений в другой части программы. Там он отлично работает и находится в задании / потоке.

Задание, созданное:

List<Task> tasks = new List<Task>
{
    Task.Run(() => Data.TryAdd(SectionName, Dataobj.Create(new Rectangle(0, 500, (int)Size.X, 124))))
}

Зависит либо SetData, либо new Texture2D. Протестировано перемещением новой texture2d в основной поток.

Texture2D localdot = new Texture2D(Memory.graphics.GraphicsDevice, 4, 4);
Color[] tmp = new Color[localdot.Height * localdot.Width];
for (int i = 0; i < tmp.Length; i++)
tmp[i] = Color.White;
localdot.SetData(tmp);

Часть, где я ожидаю завершения.

 if (!Task.WaitAll(tasks.ToArray(), 10000))
                throw new TimeoutException("Task took too long!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...