почему игровые механизмы предпочитают статические библиотеки по динамически подключаемым библиотекам

Я читал несколько играющих книг. И они всегда предпочитают создавать механизм как статическая библиотека по динамическому каналу. Я плохо знаком с C++, таким образом, я не высоко знание когда дело доходит до статических библиотек и динамически подключаемых библиотек. Все, что я знаю, является статическим увеличением библиотек размер Вашей программы, где библиотеки ссылок DLL загружаются, поскольку Вам нужны они в рамках Вашей программы.

[править]

Я играл в игры, где почти казалось, что они использовали DLL для загрузки в звуке, освещении, и что не все индивидуально. поскольку уровень загружался. причина Вам не обязательно нужно это когда Ваш в игровом меню.

19
задан numerical25 27 April 2010 в 15:26
поделиться

5 ответов

Библиотеки с динамическими ссылками должны быть позиционно независимыми; это может привести к снижению производительности на некоторых архитектурах процессоров.

Статические библиотеки могут быть оптимизированы при включении в вашу программу, например, путем удаления мертвого кода. Это может повысить производительность кэша.

20
ответ дан 30 November 2019 в 03:48
поделиться

Другой вопрос касается различий между статическими и динамическими библиотеками: Когда использовать динамические и статические библиотеки

Что касается того, почему они используют статические библиотеки, дополнительная скорость может того стоить, и вы можете избежать ада DLL ( была большой проблемой в прошлом). Это также полезно, если вы хотите распространять свою программу и библиотеки вместе, гарантируя, что получатель имеет правильные зависимости, хотя ничто не мешает вам распространять библиотеки DLL вместе с исполняемым файлом.

2
ответ дан 30 November 2019 в 03:48
поделиться

Под независимой позицией он подразумевает, что, поскольку игровой движок и DLL полностью разделены, DLL является автономной и не может быть встроена в код игрового движка, тогда как статическое связывание библиотеки позволяет компилятору оптимизировать использование вашей игры. код двигателя И код библиотеки.

Например, предположим, что есть небольшая функция, которую, по мнению компилятора, следует встроить (скопировать непосредственно вместо вызова функции). Затем со статической библиотекой компилятор сможет встроить этот код, поскольку он знает , что это за код (вы линкуете во время компиляции). Однако с динамической библиотекой компилятор не сможет встроить этот код, поскольку он не знает , что это за код (поскольку он будет компоноваться во время выполнения).

7
ответ дан 30 November 2019 в 03:48
поделиться

Часто при разработке игр для консоли динамическое связывание невозможно. Если вы хотите использовать движок как для разработки консоли, так и для ПК, лучше избегать динамического связывания.

2
ответ дан 30 November 2019 в 03:48
поделиться

Еще одна причина, которую часто упускают из виду, заслуживает упоминания: во многих играх вы не собираетесь запускать много других вещей, и множество библиотек, которые используются для игры не будут использоваться для других вещей, которые вы можете запускать одновременно с игрой, поэтому вам не нужно беспокоиться об одном из основных положительных моментов, которые вы получаете от использования общих библиотек, а именно о том, что одна копия (большая часть) библиотеки должна быть загружена за один раз, в то время как несколько вещей могут использовать эту одну копию. При запуске игры у вас, вероятно, будет только одна программа, которая все равно захочет использовать эту библиотеку, потому что вы, вероятно, не собираетесь одновременно запускать многие другие программы (особенно другие игры или 3D-программы).

Вы также открываете возможность глобальной оптимизации времени / времени компоновки, что намного сложнее с разделяемыми библиотеками.

3
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: