2016-10-24 15 views
1

Когда я установил переменные окружения QSG_RENDERER_DEBUG=render, я получаю следующий результат:Что сделать из выхода QSG_RENDERER_DEBUG = оказывать

Renderer::render() QSGAbstractRenderer(0x383865f8) "rebuild: none" 
Rendering: 
-> Opaque: 38 nodes in 2 batches... 
-> Alpha: 34 nodes in 13 batches... 
- 0x3836a830 [retained] [noclip] [opaque] [ merged] Nodes: 14 Vertices: 88 Indices: 124 root: 0x0 
- 0x3836a7f0 [ upload] [noclip] [opaque] [ merged] Nodes: 24 Vertices: 96 Indices: 144 root: 0x0 
- 0x3836a8f0 [retained] [noclip] [ alpha] [unmerged] Nodes: 1 Vertices: 48 Indices: 74 root: 0x0 
- 0x3836a870 [retained] [noclip] [ alpha] [unmerged] Nodes: 3 Vertices: 52 Indices: 78 root: 0x0 
- 0x3836a8b0 [retained] [noclip] [ alpha] [unmerged] Nodes: 6 Vertices: 400 Indices: 720 root: 0x0 
- 0x3836a530 [retained] [noclip] [ alpha] [unmerged] Nodes: 4 Vertices: 56 Indices: 84 root: 0x0 
- 0x3836a570 [retained] [noclip] [ alpha] [ merged] Nodes: 1 Vertices:  4 Indices:  6 root: 0x0 opacity: 1 
- 0x3836a5b0 [retained] [noclip] [ alpha] [unmerged] Nodes: 7 Vertices: 720 Indices: 1302 root: 0x0 
- 0x3836a630 [retained] [noclip] [ alpha] [unmerged] Nodes: 3 Vertices: 28 Indices: 42 root: 0x0 
- 0x3836a5f0 [retained] [noclip] [ alpha] [ merged] Nodes: 3 Vertices: 12 Indices: 18 root: 0x0 opacity: 1 
- 0x3836a6f0 [retained] [noclip] [ alpha] [ merged] Nodes: 1 Vertices:  4 Indices:  6 root: 0x0 opacity: 1 
- 0x3836a670 [retained] [noclip] [ alpha] [ merged] Nodes: 1 Vertices:  4 Indices:  6 root: 0x0 opacity: 1 
- 0x3836a6b0 [retained] [noclip] [ alpha] [ merged] Nodes: 1 Vertices:  4 Indices:  6 root: 0x0 opacity: 1 
- 0x3836a330 [retained] [noclip] [ alpha] [unmerged] Nodes: 2 Vertices: 24 Indices: 36 root: 0x0 
- 0x3836a370 [retained] [noclip] [ alpha] [ merged] Nodes: 1 Vertices:  4 Indices:  6 root: 0x0 opacity: 1 
-> times: build: 0, prepare(opaque/alpha): 0/0, sorting: 0, upload(opaque/alpha): 0/0, render: 1 

, который я считаю плохо catastrophal, если я хочу, чтобы запустить его на низкопроизводительное устройство, такое как старый малиновый PI.

Однако я не могу найти ответы на вопросы: Что делать из этого? Как я могу улучшить его, уменьшить количество партий, особенно альфа-партий?

У меня всего лишь несколько объектов (2) с opacity != 0, и во время этого выхода все они были установлены в невидимые.

У меня есть два SVG (по 8 узлов каждый), которые могут отображаться там.

Я не использовать любые цвета, которые не будут соответствовать в формате '#------ff' (если SVG-цвета которых я использую некоторые могут иметь альфа-канал, установленный в противном случае) и не использовать цвет 'transparent'

У меня есть объект, состоящий из двух «концентрических» Rectangles непрозрачного цвета, которые отмечены без пометок при визуализации overdraw, о котором я понятия не имею, почему. По крайней мере, это можно объединить с непересекающимися братьями и сестрами, я считаю. Почему бы и нет?

Я думаю, что это помогло, если бы я мог идентифицировать объекты, но когда я выхожу из адресов любого видимого объекта, (Component.onCompleted: console.log(this)) Я не получаю ни одного из перечисленных адресов.
Как я могу достичь сопоставления между объектами рендеринга и моими QML-объектами?

И - Что означает все эти записи в списке?

EDIT: Кажется, я использовал некоторые PNG с поддержкой альфы. Замена их на JPG привела к этому сообщение. Но это были только 5 узлов/партий. 34 идти ...

-> Opaque: 43 nodes in 6 batches... 
-> Alpha: 29 nodes in 8 batches... 

Привет & Благодарности,
-т-

ответ

1

От doc.qt.io: "[одна партия] создается для каждого уникального набора состояния материала и геометрии типа". Уменьшите количество различий, и рендеринг по умолчанию помещает совместимые примитивы OpenGL в одну и ту же партию.

Например:

  • Прямоугольник элементы с различными width/height/color/gradient/rotation свойства группируются вместе, но с разными opacity/radius/antialiasing свойства не являются.

  • Элементы прямоугольника с атрибутом color имеют непрозрачное значение с использованием шестнадцатеричных триплетов (пример.: с указанием 'forestgreen' с '#228B22' или '#282'). Но указание полупрозрачных цветов (шестнадцатеричный квадроцикл, который не начинается с , например: '#44228B22' - 25% непрозрачный 'forestgreen') заставляет отдельную партию , даже если полупрозрачные значения цвета идентичны (проверено на Qt 5.9.1). Наличие полупрозрачных цветов border также создает отдельные партии , даже если полупрозрачные значения цвета идентичны.

  • Текстовые элементы с различными fontletterspacing/underline свойства сгруппированы вместе, но разные fontbold/italic/pixelSize/hintingPreference свойства разделены.

Вы можете определить, какие объекты являются объектами, которые изменяют видимое свойство и видят то, что появляется или исчезает.