У меня есть приложение на C # .NET, с помощью которого я создал пользовательский элемент управления отображением изображений. Каждое изображение отображает собственный контекст отображения и рисует изображение с помощью glDrawPixels (да, я знаю, что было бы лучше использовать текстуры, я планирую в будущем, но это приложение уже слишком далеко, и мое время ограничено).
Я сейчас пытаюсь сделать оба изображения панорамированными одновременно. То есть, когда одно изображение перемещается вниз на десять пикселей, второе изображение перемещается вниз на десять пикселей. Вот так:
imageOne.YPan -= 10;
imageTwo.YPan -= 10;
imageOne.Invalidate(); //This forces a redraw.
imageTwo.Invalidate(); //This forces a redraw.
Хорошо, вот моя проблема. Только одно из отображаемых изображений перерисовывается. Если я поставлю паузу между двумя вызовами Invalidate и сделаю так, чтобы длительность паузы составляла не менее 110 миллисекунд, обе перерисовались, но не одновременно. Таким образом, похоже, что второе изображение всегда пытается догнать первое. Кроме того, 110-миллисекундная пауза слишком сильно замедляет движение.
Я пытался поместить обновление и аннулирование каждого изображения в отдельную ветку, но это не помогло.
В начале рисунка я делаю соответствующий контекст текущим, а в конце я вызываю swapbuffers (). Я попытался добавить glFinish в конец функции рисования, но изменений не было.
Может быть, проблема в видеокарте? Я застрял с помощью встроенного графического процессора, который имеет только OpenGL 1.4.
Надеюсь, я предоставил достаточно подробностей, чтобы найти ответ на мою проблему.