Russian Qt Forum

Qt => Qt Quick => Тема начата: kuzulis от Апрель 11, 2019, 19:18



Название: Сдедать QSGNode невидимым
Отправлено: kuzulis от Апрель 11, 2019, 19:18
Всем привет.

Вопрос спецам по OpenGL:

Имею класс, производный от QQuickItem, который имеет несколько дочерних QSGNode узлов.
Каждый из этих узлов отрисовывает в QQuickItem::updatePainNode() некие линии по точкам,
которые передаются в вертексный шейдер. Каждый узел QSGNode содержит как вертексный,
так и фрагментный шейдер. Мне нужно например скрывать некоторые узлы QSGNode...

Вопрос: как это делать? Просто не заполнять, т.е очищать точки у вертексного шейдера
когда мне надо скрыть каляку-маляку? :) или как-то с прозрачностью бороться, например,
пытаться подменять цвет на прозрачный? Как правильно это делается?


Название: Re: Сдедать QSGNode невидимым
Отправлено: Igors от Апрель 12, 2019, 05:54
...скрывать некоторые узлы QSGNode...
Без понятия что это. поэтому пардон если не в тему. Но по-любому OpenGL рисует "примитивы" (фейсы, напр точки, линии, тр-ки). Шейдер имеет "вертексы" (точки на которые эти примитивы ссылаются), но сами примитивы ему неизвестны, это задается вызывающим, напр ф-цией glDrawElements. Поэтому "выбрасывать точки" катит только если сами примитивы - точки. С прозрачностью еще хуже по той же причине. Правильным выглядит выкинуть те примитивы которые нужно скрыть. Часто их называют "индексы", доступ к ним в любой системе должен быть, ищите (если уж связались с этой какашкой)