Я пишу 2-мерный плитку. В настоящее время моя программа рисования использует библиотеку C# Drawing для перерисовывания каждой видимой плитки каждый раз, когда экран обновляется. У меня есть прокрутка и масштабирование, чтобы работать, и все выглядит так, как я хочу. Но рутина медленная. Теперь я пытаюсь улучшить его. У меня есть пара вопросов:Рисование 2D-спрайтов (битовых карт) Эффективно
Во-первых, я думаю, что перерисовывать плитки при каждом обновлении не нужно (поскольку они никогда не меняются). Сейчас я пытаюсь изменить алгоритм так, чтобы он записывал всю карту в одно растровое изображение при инициализации, а затем разрезает правильную часть растрового изображения, когда пришло время рисовать. Считаете ли вы, что это правильный путь? (Я также подумал о том, чтобы оставить изображение в фоновом режиме и просто прокрутить его. Но потом я решил, что не хочу рисовать материал, который находится вне поля зрения. Однако, возможно, это дешевле, чем вырезать/вставлять ? Ошибка памяти и времени?)
Во-вторых, насколько я понимаю, процедуры C# Drawing не используют полную мощность GPU. Я думаю, что я должен попытаться сделать рисунок в OpenGL (или DirectX, но я предпочитаю первый, поскольку он является мультиплатформенным). Это поможет? Знаете ли вы, что для OpenGL используется учебник по тайному (или общему рисунку)? Ссылка на книгу также может помочь.
Я также не делаю многопоточность на данный момент (на самом деле у меня есть только смутное представление о том, что это такое). Должен ли я попытаться многопоточный ящик? Или OpenGL сделает многопоточность для графической избыточности?
Спасибо.
XNA4.0 вышел через 2 недели после того, как задал свой вопрос. Я попробовал, понравился и переключился на него. XNA управляет DirectX неявно, поэтому можно просто позволить своим спрайтам всплывать, не беспокоясь ни о чем. Очень хорошо. Мой друг использует WPF. Это также прекрасно работает, но я думаю, вам нужно знать немного DirectX (не большая проблема). Еще раз спасибо за отличные ответы, ребята. – JackKane