Ваша проблема с изменением размера и смещением второй текстуры в Macroquad может быть связана с неправильным использованием матрицы преобразования или настройками камеры. Давайте разберем возможные причины и варианты решения:
1. **Настройка камеры**: Убедитесь, что вы правильно устанавливаете параметры камеры для каждого этапа рендеринга. Когда вы используете `Camera2D`, она влияет на то, как ваши текстуры отображаются на экране. Если вы не сбрасываете или неправильно настраиваете матрицы между этапами, это может привести к смещению или искажению изображений.
2. **Ресайзинг текстур**: Проверьте, правильно ли задаются размеры `RenderTarget`. Если вы меняете размеры текстуры или масштабы при выводе, это также может привести к нежелательным визуальным артефактам. Убедитесь, что выходные размеры вашего `RenderTarget` совпадают с размерами экрана или теми размерами, к которым вы стремитесь.
3. **Отрисовка текстур**: Когда вы отрисовываете текстуры на экране, проверьте, что вы используете правильные координаты для позиционирования. Если вы, например, просто выводите текстуру на экран без учета камеры или с неправильными координатами, это может сместить текстуру вне области отображения.
4. **Порядок отрисовки**: Убедитесь, что порядок операций отрисовки выполняется корректно. Например, если вы сначала нарисуете один проход, а затем на него добавите второй, убедитесь, что вы не забыли выставить матрицы преобразования и не переписываете искажения.
5. **Логи и отладка**: Включите режим отладки и добавьте логи, чтобы отслеживать фактические размеры текстур и их положение перед и после каждого этапа отрисовки. Это поможет идентифицировать, на каком этапе идут изменения.
Пример кода может выглядеть так:
```rust
fn draw_example() {
let render_target = render_target(800, 600);
// Пример первого этапа рендеринга
set_render_target(Some(render_target)); // Установите целевой рендер
clear_background(WHITE);
// ваша логика отрисовки 1-й текстуры здесь...
// Второй этап
clear_background(WHITE);
// ваша логика отрисовки второй текстуры...
set_render_target(None); // Вернуться к экрану
// Отрисовка собранной текстуры на экран
draw_texture(render_target.texture, 0.0, 0.0, WHITE);
// Возможно, используйте scale и другие параметры здесь
}
```
Если вы все еще испытываете проблемы, рассмотрите возможность предоставления дополнительного кода или данных, чтобы можно было дать более точные рекомендации.