3D графика на c#, OpenGL и SFML #2

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

Это больше похоже не на обучение, а просто запись видео, где ты пишешь код. Надо поподробней объяснять, если ты делаешь именно обучение. А так все отлично. Не забрасывай канал.

IINOCON
Автор

Недооцененый канал👍👍👍 Только вот блин, я только начал учить sfml на c++ и теперь стою перед выбором 😁

angelfromtheunderground
Автор

В методе LoadShaders() нужно возвращать в случае ошибки -1, чтобы не продолжать выполнение в случае ошибки.

ivan.enzhaev
Автор

Вещественные числа в шейдерах должны записываться с точкой:
gl_Position = vec4(aPosition, 1.0);
А не так:
gl_Position = vec4(aPosition, 1);
Цитата:
Последняя, и возможно, важнейшая деталь: спецификация GLSL не гарантирует автоматического приведения типов. Что это означает? Производители оборудования используют различные подходы для ускорения работы видеокарт, но они вынуждены обеспечивать соответствие какому-то минимальному набору требований. Автоматическое приведение в этот набор не входит. В нашем примере тип vec4 содержит значения с плавающей точкой, поэтому он должен быть инициализирован соответствующими числами. Если вы хотите писать хороший, целостный код и не тратить многие часы на отладку белых экранов, возьмите себе за правило использовать точку (.) в значениях с плавающей точкой. Следующий код не везде будет работать корректно:
void main() {
gl_FragColor = vec4(1, 0, 0, 1); // ОШИБКА
}

ivan.enzhaev
Автор

Шейдеры лучше создать из среды в корне проекта и ставить в свойствах галочку "Copy if newer", тогда они будут копироваться в bin, если в них были изменения. В bin не надо ничего хранить, потому что эту папку обычно добавляют в .gitignore и она игнорируется системой контроля версией.

ivan.enzhaev
Автор

Я думаю многим будет интересно уроки по платформеру

мистерчи-юр
Автор

Вместо:
string info;
GL.GetProgramInfoLog(program, out info);
Можно написать:
string info =
Так же и с шейдерами.

ivan.enzhaev