Порядок рисования Away3D Stage3DProxy

У меня есть флэш-приложение, в котором два 3D-вида совместно используют один и тот же Stage3DProxy, потому что мне нужно, чтобы одно всегда накладывалось / рисовалось поверх другого. Тем не менее, они, похоже, используют один и тот же 3D-пробел /z-буфер (?).

Моя функция обновления в настоящее время выглядит так:

private function onEnterFrame(event : Event) : void {   
    stage3DProxy.clear();
    away3DView.render();
    away3DView2.render();
    stage3DProxy.present();
}

Ясно, что этого недостаточно, я где-то читал, что можно использовать метод setDepthTest, например:

stage3DProxy.context3D.setDepthTest(false, Context3DCompareMode.NEVER);

... установить его в разные режимы между каждым видом render() позвоните, но я не совсем понимаю, как это работает, и документация очень тонкая на местах. Я играл, настраивая разные вещи между вызовами рендеринга, но без радости.

Единственные примеры, которые я могу найти для настройки Stage3DProxy, используют одно представление Away3D и два скворца - это не то, что мне нужно. Я прочитал на их форумах комментарий, в котором говорится, что вы должны указывать определенные настройки setDepthTest примерно в "8 других местах", но не уточняю, где они находятся или для чего они должны быть установлены, и это звучит как хак для что-то, что должно быть довольно простым!

Если бы кто-то мог помочь, я был бы очень благодарен, или если кто-то знает другой способ сделать это - навязывание определенного порядка рисования, кажется, должно быть относительно тривиальной задачей, но я не могу найти ничего полезного в этом, я хочу придерживаться Away3D - неплохой API и набор функций, но это реальное препятствие для моего текущего проекта!

заранее спасибо

1 ответ

Решение

После многих веков этот ответ был нелепо прост:

view3D.layeredView = true;

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

Я не могу поверить, что это было так трудно найти, все руководства Stage3DProxy говорят о том, чтобы делиться со Starling, а не с другим View3D... надеюсь, что это остановит кого-то еще от того, чтобы вырвать им волосы!

Другие вопросы по тегам