Constructors

GLSL более рьяно относится к безопасности типом, чем С++, и имеет меньшее число неявных преобразований значений. К примеру,

int f = false;

приведет к ошибке компиляции из-за присвоения логического значения целочисленной переменной. Типы будут неявно преобразованы в соответствии с таблицей 2.2.

table2.2

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

Любое другое преобразование значений требует явного использования конструктора преобразований. Конструктор, как и конструкторы других языков на подобии С++, – это функция с тем же именем, что и имя типа. К примеру:

float f = 10.0;
int ten = int(f);

использует конструктор int. Другие типы так же имеют соответствующие конструкторы: float, double, uint, bool, а так же векторы и матрицы из этих типов. Каждый из них принимает остальные типы для явного преобразования. Эти функции так же иллюстрируют другие особенности GLSL: перегрузки.

Main Admin

4 Comments

  1. Книга, которая предложена для перевода, 2013 года выпуска, и версия еще 330, хотя актуальная 450. Нужно будет найти свежую литературу, иначе работа может оказаться напрасной, а читатель больше запутается.
    Имеющийся перевод актуален, в нем лишь самые основы.

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

    • 9-е издание указанной книги, как я понял, содержит самый свежачек, в том числе SPIR-V. Книга выпущена на стыке 16 и 17 годов

    • На этой странице имеется несколько ссылок, которые могут заинтересовать. В том числе и на русском.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *