Нет. Не все.
Вот слон большой задницы номер один в комнате с большинством инструментов ORM (особенно LINQ к SQL:
Вам гарантируют, то ЛЮБОЕ связанное с данными изменение потребует полного повторного развертывания Вашего приложения.
, Например, мое дневное задание может в настоящее время решать большинство проблем запроса путем изменения существующей хранимой процедуры и повторного развертывания просто что одна часть. С Linq, и др., Ваши запросы данных перемещены в Ваш фактический код. Угадайте то, что это означает?
gl_FragCoord - это экранные координаты, поэтому вам потребуется информация о размере экрана и тому подобное, чтобы создавать его на основе Position. Созданный вами fake_frag_coord будет соответствовать точке на экране в нормализованных координатах устройства, я думаю (от -1 до 1). Итак, если бы вы умножили размер экрана на половину в определенном измерении, а затем сложили этот размер, вы бы получили фактические пиксели экрана.
Проблема заключается в том, что gl_ModelViewProjectionMatrix * gl_Vertex, вычисляемая в шейдере, не всегда является тем, что дает конвейер фиксированных функций. Чтобы получить идентичные результаты, выполните fake_frag_coord = ftransform ().
Изменить:
А затем масштабируйте его в соответствии с размерами экрана.
varying vec2 fake_frag_coord;
//in vertex shader:
fake_frag_coord=(gl_ModelViewMatrix * gl_Vertex).xy