Динамическое изменение текстуры

Здравствуйте. Делаю что то похожее с игрой

Game of Life

. Но то ли xna/monogame не созданы для таких игр, то ли я не так делаю. Суть в том что на одной текстуре(RenderTarget2D) отрисовываются пиксели. Но когда отрисовка пикселей за кадр превышает 500-1000, начинает падать фпс.

Я пробовал делать по разному: SetData даже в отдельном потоке работает медленно, причем когда от него начинает падать фпс даже удаление всех пикселей он продолжает лагать (или вовсе вызывает исключение); SetRenderTarget и отрисовкой в нем пикселей тоже проседает фпс от 500 пикселей за кадр.

Я конечно знаю, что тут лучше всего использовать HLSL, но я не знаю как в нем изменить данные текстуры что бы тот отрисовывал их. В массив цветов не влезет текстура с размером 600х400. Да и вообще этот HLSL работает странно, не пойму можно ли в нем изменить текстуру типа Texture2D.

Теперь я в тупике. Может кто то знает как решить такую проблему? Буду очень благодарен!