Таргетинг на большинство версий Windows для 2D-игры?

Если бы нужно было кодировать игру для большинства версий Windows, какой API следует использовать?

Я знаю, что DirectDraw работает с NT4 и выше (хотя DirectDraw эмулируется на NT4 с GDI). Однако мне сказали, что DirectDraw устарел в более новых версиях Windows?

Я мог бы вернуться только к GDI, но тогда трудно полностью устранить мерцание и разрывы, поскольку нет двойной буферизации с перелистыванием между буферами.

Должен ли я выбрать Direct3D или DirectDraw? Или есть способ полностью устранить мерцание в GDI?

Если ответом является Direct3D, какая его версия поддерживается на большинстве платформ?


person Prof. Falken    schedule 19.12.2010    source источник
comment
Вы рассматривали возможность использования для этого библиотеки более высокого уровня, такой как SDL? Например, SDL поддерживает почти все версии Windows, и если вы используете его возможности в целом, ваша игра также может работать на других системах, таких как Linux или MacOS.   -  person thkala    schedule 19.12.2010
comment
Вам действительно нужна поддержка NT4? Или даже 2000? Я не могу представить, что есть что-то еще раньше, чем XP.   -  person Rup    schedule 19.12.2010
comment
@Rup Мне не нужно, но было бы весело. Ниже, чем XP, конечно, будет отброшено в первую очередь, но было бы интересно поддержать NT4 и Win95.   -  person Prof. Falken    schedule 19.12.2010
comment
Я согласен с thkala, использование кросс-платформенной библиотеки/инструментария также приведет к более высокой совместимости в мире Windows. И кросс-платформенная поддержка — это просто довольно большой бонус, который вы получите с ним (имхо, это путь в современном мире).   -  person Bobby    schedule 20.12.2010
comment
@Amigable: Должен сказать, я нахожу ваше определение веселья интригующим!   -  person Dan Puzey    schedule 20.12.2010
comment
@ Дэн Пьюзи, я знаю! Я часто получаю это - и не только в программировании. :)   -  person Prof. Falken    schedule 20.12.2010
comment
В прошлый раз, когда я проверял, двойная буферизация с GDI была обычным явлением.   -  person Aaron Klotz    schedule 20.12.2010
comment
@ Аарон Клотц, да, двойная буферизация - обычное дело, но не очевидно, как избежать разрывов.   -  person Prof. Falken    schedule 21.12.2010


Ответы (1)


Если вы не уверены, что никогда не захотите портировать свою игру на любую платформу, отличную от Windows, я бы порекомендовал OpenGL. Он должен работать на всех версиях, начиная с 2000 и выше, и некоторые удачливые пользователи NT4 или Win98 могут его запустить (но не рекламируйте эти версии как «поддерживаемые».) Аппаратное ускорение не всегда будет работать, но влияние на производительность не будет заметно для простой 2D-игры. И вы сможете достаточно дешево перенести его на другие платформы (например, iPhone), если это необходимо.

person finnw    schedule 20.12.2010
comment
Мне это нравится. Я рассматриваю возможность принять этот ответ. Можно ли дублировать буфер и переворачивать кадры в OpenGL даже в старых версиях? - person Prof. Falken; 21.12.2010
comment
@Amigable, это не относится к OpenGL. Большинство графических процессоров могут это сделать, но некоторые (обычно используемые в нетбуках и бизнес-ПК) не могут. - person finnw; 21.12.2010
comment
но OpenGL как API (может быть, с расширением Windows?) имеет механизмы для выполнения флипа на vsync? - person Prof. Falken; 21.12.2010
comment
@Amigable, да, и это описано в этом вопросе. - person finnw; 21.12.2010