Привет, @Artic. Я не эксперт по Qt, поэтому я не могу дать вам информацию о виджетах, но я могу дать вам несколько советов по созданию ярлыка с OpenGL. Дать полную реализацию здесь непросто, потому что многое зависит от того, как вы хотите отобразить текст. Но я постараюсь изложить некоторые из ваших вариантов.
Для рендеринга текста в OpenGL большинство людей используют технику, известную как растровые шрифты, подробнее здесь:
https://learnopengl.com/In-Practice/Text-Rendering
Концепция растровых шрифтов довольно проста, все символы предварительно растеризованы в текстуру, а затем вы можете выбирать из каждой части текстуры в зависимости от нужного вам символа. Вы создаете свою метку из квадратов, текстурированных с каждой частью растрового изображения, из которого вы берете образцы для каждого символа.
Поля расстояния со знаком, в основном, используют ту же технику, но предварительно растеризованная текстура символов отображается с использованием полей расстояния со знаком, которые решают некоторые проблемы, которые возникают у стандартных растровых шрифтов.
В общих чертах, SDF работает, генерируя специальную текстуру или изображение шрифта, который хранит расстояние от края каждого символа до его центра, используя цветовые каналы изображения для записи данных.
Если вы используете поля расстояний со знаком, вам будет недостаточно просто сэмплировать из вашего растрового изображения, для отображаемых таким образом шрифтов требуется дополнительная работа (обычно выполняемая с помощью программы шейдера) для получения правильного рендеринга.
Если у вас есть способ создания ярлыка, вы можете решить, хотите ли вы отображать его в пространстве экрана или в мировом пространстве.
Если вы хотите отобразить его в мировом пространстве (где метка нависает над моделью или элементом), вам потребуется проделать дополнительную работу, если вы хотите, чтобы эта метка всегда была обращена к камере, и этот метод называется рекламным щитом.
Вы также можете визуализировать ваш текст "на лету", если вы просто хотите отобразить некоторый текст на экране в пространстве экрана. Вы можете использовать библиотеку, такую как SDL_ttf.
Смотри: http://lazyfoo.net/tutorials/SDL/16_true_type_fonts/index.php
В этом примере вы используете SDL_ttf для рендеринга строки текста на поверхность с выбранными вами размерами, затем вы можете создать текстуру OpenGL из этой поверхности и отобразить ее на экране.
Извините, если эта информация немного широка, мне понадобится более конкретный вопрос, чтобы дать вам дополнительные детали реализации.
Для реализации я бы оценил плюсы и минусы на основе того, что вам нужно. Если вы не реализовали систему для рендеринга текста, возможно, лучше придерживаться чего-то простого; Есть больше методов для рендеринга текста, чем я перечислил здесь, таких как преобразование текста в полигоны и другие библиотеки, которые пытаются решить некоторые проблемы с традиционными методами рендеринга шрифтов, но вам, вероятно, не нужно ничего сложного.
В качестве рекомендации по использованию я хотел бы использовать технику, которая вам наиболее удобна, обычно работа в OpenGL с нуля займет больше времени, но может предоставить вам более хороший набор функций для использования в будущем. , Однако, если в Qt уже есть что-то хорошее для отображения метки (например, виджет, который вы упомянули), вероятно, стоит потратить время на то, чтобы научиться использовать его, так как это может дать более быстрые результаты, и вы не хотите изобретать колесо, если тебе не нужно На этом замечании, хотя работа с нуля с OpenGL может быть очень полезной и значительно улучшить ваше понимание, так как вы должны познакомиться с тем, как все делается, когда у вас нет уровня абстракции, от которого можно зависеть. В конечном итоге это зависит от вас. Удачи!