Я сейчас пишу простую игру. Мой графический код выполняется один раз за кадр (примерно 30 раз в секунду) и записывает данные RGB в массив с 640 * 480 = 307200 записей.
Я создал окно Win32 с клиентской областью размером 640 x 480 пикселей. Какой самый быстрый способ отобразить мои данные RGB в пустом окне?
Окно нужно будет обновлять каждый кадр, поэтому мне нужно избегать мерцания. Должен ли я использовать GDI для этого? Или есть более быстрый подход с использованием другой библиотеки - скажем, DirectDraw?
Edit:
Спасибо за все ответы. Во-первых, позвольте мне исключить Direct2D в качестве опции - мне нужно поддерживать Windows XP. Во-вторых, у меня есть фон в 3D, поэтому метод, предложенный Yann Ramin и Ben Voigtto - использование Direct3D / OpenGL и одного текстурированного квадрата - так я всегда делал в прошлом.
Однако мне было интересно узнать, будет ли 2D API лучшим решением. Поскольку однозначного ответа не было, я составил тестовую программу. Код просто отображает кадровый буфер на экране несколько раз, как можно быстрее.
Я опубликовал свои результаты как часть этого дополнительного вопроса .