Используя шаблоны для управления функциями glUniform

Привет снова и нравящийся другому 'не был бы это быть большим, если мы объединим две вещи, что я действительно ничего не понимаю о '-вопросе ;)

Этот Эпизод: Универсальные формы OpenGL и Шаблоны C++

Идея: Разве не было бы замечательно, если Вы могли бы записать единственную шаблонную функцию для установки универсальных форм в программе построения теней OpenGL?

Проблема: Универсальные формы в программах построения теней установлены с помощью многих glUniform* функции. Они отличаются по:

  1. Тип: существует несколько типов, которые может взять универсальная форма. Это приводит к различным именам функций в сходстве с OpenGL: glUniform1f, glUniform1i, glUniform1fv, и т.д.

    Они могли легко быть 'объединены' с помощью перегрузки функций. Но это приводит к огромному количеству подобных функций.

    Первый вопрос: действительно ли возможно использовать шаблоны в этом месте? Насколько я понимаю шаблоны, необходимо было бы специализироваться для каждой новой функции. И в конце у Вас было бы то же количество функций как с простой перегрузкой.

  2. Количество параметра: число в функциях glUniform отсылает к числу данные параметры. Существует тот к 4 параметрам, который касается простых значений до векторов с 4 элементами.

    Второй вопрос: действительно ли возможно реализовать 'динамическое' количество параметра с шаблонами?

  3. Матрицы: сделать вещи сложными там - другой класс универсальных функций, которые отправляют матрицы, но поскольку я действительно не использую их, я действительно не интересуюсь ими.

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

С наилучшими пожеланиями, Florian

7
задан fho 2 August 2010 в 10:00
поделиться

1 ответ

1: Да и да, но по крайней мере, когда компилятор жалуется, что не может выбрать между перегрузками с плавающей запятой и двойной перегрузкой, вы можете очень просто принудительно заставить его, то есть setUniform (blah) вместо setUniform (blah)

2: На этот раз перегрузка - более простое решение :)

3: В чем вопрос?

Вопрос в том, зачем вам такое делать?

5
ответ дан 7 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: