Надлежащий способ масштабировать Поверхность SDL без отсечения?

Не с Supervision.Decide, но вы могли бы достичь этого по-другому.

Проверьте эту программу:

object Streams extends App{

  implicit val system = ActorSystem("test")

  implicit val mat = ActorMaterializer()

  val source = Source(List("1", "2", "3")).map { item =>
    Try {
      if (item == "2") {
        throw new RuntimeException("Error")
      } else {
        item
      }
    }
  }
  source
    .alsoTo(
      Flow[Try[String]]
        .filter(_.isFailure)
        .to(Sink.foreach(t => println("failure: " + t))))
    .to(
      Flow[Try[String]]
        .filter(_.isSuccess)
        .to(Sink.foreach(t => println("success " + t)))).run()

}

Выходы:

success Success(1)
failure: Failure(java.lang.RuntimeException: Error)
success Success(3)
8
задан genpfault 17 February 2015 в 14:29
поделиться

1 ответ

SDL не поддерживает масштабируемое блитирование. Согласно документации SDL_BlitSurface:

Примечание: копирование битового массива SDL еще не имеет возможности увеличения масштаба блитируемых поверхностей, или вниз как он имеет место с другими более сложными механизмами блитирования. Необходимо понять что-то для себя, если Вы хотите масштабировать изображения (например, использовать SDL_gfx).

Вы могли найти SDL_gfx здесь. Писание Вашей собственной функции блитирования не состоит в том, что плохо, это могла бы быть забава и полезный эксперимент изучения (хотя Вы будете изобретать велосипед). Используя OpenGL также опция, поскольку материал как масштабирование и вращение мог быть сделан в единственном вызове функции.

7
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

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