Единственный способ получить необходимую вам скорость - это перейти от программного рендеринга к аппаратному рендерингу ... и, к сожалению, это означает переход на OpenGL или DirectX.
Альтернатива состоит в том, чтобы попытаться оптимизировать графические процедуры так, чтобы они рисовали только те частицы, которые нужно нарисовать, а не весь экран / окно.
Я бы согласился с JaredPar, что вам лучше сначала профилировать, чтобы определить, можно ли улучшить существующую кодовую базу, прежде чем переходить на новую инфраструктуру. DirectX - не самый простой фреймворк, если вы с ним не знакомы.