2016-01-01 2 views

ответ

2

Читая их документации, вы можете обнаружить, что std::fstream является:

Входной/выходной поток класс для работы с файлами.

С другой стороны, SDL_RWops нечто большее:

SDL_RWops является абстракцией над I/O. Он предоставляет интерфейсы для чтения, записи и поиска данных в потоке, без вызова вызывающего абонента, который должен знать, откуда поступают данные.

Например, RWops может быть загружен буфером памяти или файлом на диске или соединением с веб-сервером без каких-либо изменений в том, как вызывающий абонент использует данные.

Довольно абстракция.

Итак, вы можете использовать std::fstream вместо SDL_RWops для своих файлов? Абсолютно, если вы чувствуете себя более уверенно, пойдите с ним. Последнее является полезной абстракцией над любым видом потока в вашей игре, поэтому преимущество - это нечто, кроме чтения файла.

2

SDL_RWops может быть реализован для многих типов потоков данных. Стандартные SDL предоставляют SDL_RWFromFile и SDL_RWFromMem, тогда как другие библиотеки, такие как physfs, обеспечивают реализацию RWops для многих поддерживаемых типов архивов.

Главное преимущество RWops заключается в том, что все библиотеки SDL-семейства (SDL_image, SDL_mixer, ...) поддерживают загрузку из RWops, поэтому вы можете легко подать свой собственный источник данных (например, ваш формат архива или, возможно, даже сетевой источник) им. Помимо этого, это может быть или не быть хорошим для вашего кода, в зависимости от ваших потребностей.

Смежные вопросы