Векторный текст в Open GL
От: ylem  
Дата: 19.11.18 20:00
Оценка:
OpenGL 3.2, GLSL соотвествующий.

Есть маленькие объекты. Состят из десятка-другого вершин (полилинии).
Есть большие объекты, состят из десятка-другого маленьких объектов, смещеных и повернутых, наклоененных.

Маленьких объектов сотня-другая, часто меньше.
Больших объектов в тяжелых случая тысячи, возможно, десятки тысяч.

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

Маленькие объекты это верторый шрифт, больше -- надписи. Все должно масштабироваться.

Хочется это все нарисовать с наименьшим кол-вом вызовов, и чтобы поменьше считать на CPU (SIMD в продакшене недоступен, т.к. C#).

Идеально, видимо, как-то передать в вершинный шейдер по одной "локальной" трансофмации для кадой вставки маленького объекта внутри большого;
и по одной трансформации для каждого большого объекта.
Но, видимо, такой возможности нет и можно передать в шейдер только отдельные (в основном одинаковые) трансформации для каждой вершины?

Про glVertexAttribDivisor заню, но он же работает только для glDrawElementsInstanced и это мне не поможет?

Вероятно, было бы круто в геом.шейдере собирать весь большой объект по его "описанию" и по заранее как-то переданному "словарю" маленьких объектов,
но 1. не представлю, как бы это сделать 2. не уверен в производительности (но проверить не долго) 3. интуитивно выглядит вычурно.

Посоветуйте, пожалуйста, что-нибудь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.