Очевидно, моя проблема была не в перерисовке SimpleOpenGLControl, а в потоке, из которого вызывались функции.
Мое приложение ожидает получения новых данных в одном потоке, а затем передает данные обратно в формы с помощью делегированной функции отображения.
Хотя ошибок и предупреждений не возникало, очевидно, мой буфер рендеринга OpenGL не заполнялся, потому что функции, которые его заполняли, были вызваны из независимого потока.
Хотя я не до конца понимаю делегирование потоковой функции, я протолкнул процедуры через поток, в котором выполнялись формы, и мой буфер рендеринга OpenGL снова был доволен.
Итак, ответ на мой вопрос был:
OpenGL не будет заполнять буферы рендеринга, если это не происходит в том же потоке, в котором он был инициализирован.