Откат к сплошному цвету, если текстура не может быть загружена

Мой текущий рендерер рисует формы по положению и цвету их вершин. Он еще не может обрабатывать текстуры.

struct Form
{
unsigned int Positions, Colors, Elements, Program;
};

Теперь я хочу реализовать возможность текстур. Поскольку в финальной игре не будет форм без текстуры, а будут цвета, я хочу заменить цветную функцию вместо разработки дополнительной.

Таким образом, рендерер теперь должен рисовать формы по позиции и текстурной координате их вершин.

struct Form
{
unsigned int Positions, Coordinates, Elements, Texture, Program;
};

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

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

0

Решение

Если вы производите выборку из текстурного блока, к которому не привязана ни одна текстура, полученные выборки всегда получаются белыми; выборка текстуры без ошибок не является ошибкой. Следовательно, вы можете использовать этот белый для модуляции его запасным цветом.

1

Другие решения

Я решил эту проблему, создавая фиктивную текстуру проверки и назначая ее любому объекту, который не имеет допустимой текстуры. Он не основан на цвете вершины или цвете сетки, но работает. И никаких изменений шейдера не требуется, всего несколько строк кода для проверки нулевых текстур.

4

По вопросам рекламы [email protected]