You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Получаем доступные возможности нашей поверхности, которые исходят из возможностей переданного адаптера
16
+
17
+
Далее нам нужно определиться с форматом кадров, которые мы будем выводить на поверхность, то есть в окно. На данный момент мы просто можем взять поддерживаемый список форматов поверхности, попытаться выбрать формат с поддержкой `SRGB`, и взять первый попавшийся, если такого не нашлось.
18
+
19
+
В реальном приложении вы, скорее всего, захотите организовать здесь более сложную логику выбора формата.
20
+
21
+
Теперь, получив подходящий формат поверхности, мы можем создать объект ее конфигурации `SurfaceConfiguration`:
22
+
23
+
-`usage` - как мы будем использовать эту поверхность. На самом деле это параметр текстуры, поскольку отрисовку мы производим именно в нее. Но эта текстура находится в поверхности, поэтому данный параметр задается здесь. Выбираем `RENDER_ATTACHMENT`, то есть указываем, что данная текстура в поверхности будет использоваться как цель рендера, в нее будет выводиться полученная картинка.э
24
+
-`format` - полученный нами формат поверхности
25
+
-`width` - ширина поверхности. Передаем вычисленное ранее значение
26
+
-`height` - высота поверхности. Передаем вычисленное ранее значение
27
+
-`present_mode` - режим отображения кадров на поверхности. Режимов достаточно много, и разные устройства поддерживают разные режимы. Но wgpu сильно облегчает нам здесь жизнь, предоставляя опции `AutoVsync` и `AutoNoVsync`. Эти опции будут перебирать разные режимы отображения, пока не наткнутся на первый поддерживаемый нашим устройством. Различие между ними, соответственно, в наличии или отсутствии вертикальной синхронизации, то есть ограничения частоты вывода кадров частотой монитора.
28
+
-`desired_maximum_frame_latency` - число кадров, которое может одновременно ожидать вывода на экран. Обычно указывается от 1 до 3, но может быть и больше. Не может быть меньше 1. Слишком низкое значение может привести к простою GPU, которой просто некуда будет отдавать готовый кадр, если поверхность не успевает их отрисовывать. По-умолчанию принято ставить 2, как оптимальное значение для большинства случаев.
29
+
-`alpha_mode` - режим альфа-канала, отвечающего за прозрачность цветов. В данном случае выбираем автоматическое определение на основании поддерживаемого
30
+
-`view_formats` - форматы представлений текстур, которые будут поддерживаться данной поверхностью для рендера. Собственный формат поверхности поддерживается всегда, поэтому нет нужды что-либо туда передавать.
0 commit comments