Сначала нужно изучить предметную область или хотя бы пройти ликбез, а потом уже изучать инструменты.
Графика — это предметная область. OGL — инструмент. OpenGL != Графика. Только почему-то многие не понимают это на примере графики и думают, что OpenGL'ем научился пользоваться — значит знаешь графику. Хотя как только приступаешь к какому-нибудь GAPI сразу понимаешь, что что-то тут не так и надо подходить с другого угла.
Если на примере сетевого взаимодействия, то это как использовать сетевые функции не понимая стека сетевых технологий.
Поэтому полностью согласен с претензией от GrimMaple. Зачем очередная статья передачи данных на GPU средствами GAPI? Статей миллион и на хабре и в других источниках. У самой Khronos Group отличная документация и сопутствующие книги «Red book» и «Programming guide».
Это понятно. Поэтому и добавил про «некоторые места».
Ниже комментарий, в котором более лаконично описано то, что я хотел сказать: «const — это про семантику, а не оптимизацию»
Да можно и посмотрев код понять, что никто не собирался менять переменную.
Плюс константная ссылка ловит временные объекты и не нужна перегрузка & и &&.
А самый важный фактор, имхо, зачем использовать конст в некоторых местах — это то, что константные объекты доступны только на чтение и соответственно должны быть потокобезопасными.
Неверно. Плоское затенение в общем случае не требует дублирования вершины. Как минимум OpenGL при включении плоского затенения просто дублирует нормаль первой вершины на все, Т.е. количество вершин должно быть лишь не меньше, чем количество полигонов, т.е. 18 в данном случае.
Это как? В старом конвейере мы делаем glShadeModel(GL_FLAT) и он каким-то образом может «дублировать» нормаль (не имею представления каким, но пусть умеет). Допустим у нас есть два соединенных треугольника в одной вершине, которые лежат в разных плоскастях. И пусть эта вершина ялвяется первой для каждого из двух треугольников. Получается, что как минимум в общих точках нормали будут разных при flat shading, и соответственно вершины будут разными. То есть если взять сферу, то ничего «дублироваться» вообще не будет. Об этом и написано в примере.
Как сделать «дублирование» в нефиксированном конвейере я вообще не имею представления, да еще и так, чтобы данные о нормали были только в одном экземпляре (не кладется такой вариант на архитектуру GPU). Может Metal, Vulkan, DirectX12 и позволяет такое провернуть — не знаком я сними достаточно близко — но если смотреть с архитектуры GPU, то все равно нужно иметь копии данных для каждой вершины.
Помимо установления значения функция может выполнять и другие действия, например, высчитывать какие-то внутренние состояния или переменные, чтобы не считать их каждый раз, когда они нужны.
Нужна пояснительная бригада: это какой-то троллинг над PR review?
Про программу что была не скажу, но сейчас я пользуюсь вот этой штукой
А вообще, на вкус и цвет все фломастеры разные.
Вот не могу понять, что за мода пошла с экрана к читателю на ТЫ обращаться. Всемирное панибратство какое-то
Графика — это предметная область. OGL — инструмент.
OpenGL != Графика. Только почему-то многие не понимают это на примере графики и думают, что OpenGL'ем научился пользоваться — значит знаешь графику. Хотя как только приступаешь к какому-нибудь GAPI сразу понимаешь, что что-то тут не так и надо подходить с другого угла.
Если на примере сетевого взаимодействия, то это как использовать сетевые функции не понимая стека сетевых технологий.
Поэтому полностью согласен с претензией от GrimMaple. Зачем очередная статья передачи данных на GPU средствами GAPI? Статей миллион и на хабре и в других источниках. У самой Khronos Group отличная документация и сопутствующие книги «Red book» и «Programming guide».
Ниже комментарий, в котором более лаконично описано то, что я хотел сказать: «const — это про семантику, а не оптимизацию»
Плюс константная ссылка ловит временные объекты и не нужна перегрузка & и &&.
А самый важный фактор, имхо, зачем использовать конст в некоторых местах — это то, что константные объекты доступны только на чтение и соответственно должны быть потокобезопасными.
P.S. Есть разные инструменты, подходы и интерпретации. Собственно, разный тип мышления выбирает тот интсрумент, который ему понятен.
Вы еще тут или уже бежите быть танцовщицей go-go?
Что за привычка говорить окруающим, что делать, а что не делать...?
Это как? В старом конвейере мы делаем glShadeModel(GL_FLAT) и он каким-то образом может «дублировать» нормаль (не имею представления каким, но пусть умеет). Допустим у нас есть два соединенных треугольника в одной вершине, которые лежат в разных плоскастях. И пусть эта вершина ялвяется первой для каждого из двух треугольников. Получается, что как минимум в общих точках нормали будут разных при flat shading, и соответственно вершины будут разными. То есть если взять сферу, то ничего «дублироваться» вообще не будет. Об этом и написано в примере.
Как сделать «дублирование» в нефиксированном конвейере я вообще не имею представления, да еще и так, чтобы данные о нормали были только в одном экземпляре (не кладется такой вариант на архитектуру GPU). Может Metal, Vulkan, DirectX12 и позволяет такое провернуть — не знаком я сними достаточно близко — но если смотреть с архитектуры GPU, то все равно нужно иметь копии данных для каждой вершины.
Книги
Помимо установления значения функция может выполнять и другие действия, например, высчитывать какие-то внутренние состояния или переменные, чтобы не считать их каждый раз, когда они нужны.
Странно