Как я делаю структуры прозрачными в OpenGL?

Каждая приостановляемая функция имеет доступ к глобальной переменной coroutineContext, которую вы можете тривиально обернуть в CoroutineScope, но это не ее целевое назначение. Это там, так что вы можете в любой момент проверить, была ли отменена ваша сопрограмма, получить отладочную информацию, такую ​​как имя задания и т. Д.

По словам Романа Елизарова в его недавнем Medium post :

suspend fun doNotDoThis() {
    CoroutineScope(coroutineContext).launch {
        println("I'm confused")
    }
}

Не делайте этого!

blockquote>

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

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

Итак, если вы хотите параллельную декомпозицию, то используйте блок coroutineScope или, возможно, supervisorScope:

coroutineScope {
    launch { 
        // ... task to run in the background
    }
    // ... more work while the launched task runs in parallel
}
// All work done by the time we reach this line

coroutineScope является приостановленной функцией, и она не будет завершена, пока все сопрограммы были запущены полностью.

5
задан Spooky 19 June 2015 в 20:48
поделиться

1 ответ

Таким образом, другой ответ, который был здесь, но был удален, упоминал об этом - как правило, для правильной работы альфа-смешивания необходимо сортировать объекты от дальнего к ближнему в системе координат камеры.
Вот почему ваши полигоны смешиваются с фоном. Вы можете подтвердить, что это действительно проблема, отключив тест глубины. Без проверки глубины отображаются все фрагменты, и вы сможете увидеть альфа-смешение.

Подробнее об этом на этой странице.

9
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

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