Что лучший способ состоит в том, чтобы потянуть полноэкранную четверку в OpenGL 3.2?

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

21
задан Brynn Mahsman 6 April 2010 в 22:49
поделиться

1 ответ

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

Вам не нужно умножать их на любую матрицу в вершинном / фрагментном шейдере.

Вот несколько простых примеров кода:)

Вершинный шейдер:

const vec2 madd=vec2(0.5,0.5);
attribute vec2 vertexIn;
varying vec2 textureCoord;
void main() {
   textureCoord = vertexIn.xy*madd+madd; // scale vertex attribute to [0-1] range
   gl_Position = vec4(vertexIn.xy,0.0,1.0);
}

Фрагментный шейдер:

varying vec2 textureCoord;
void main() {
   vec4 color1 = texture2D(t,textureCoord);
   gl_FragColor = color1;
}
17
ответ дан 29 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: