Как получить 2d координаты вершин webgl? - PullRequest
4 голосов
/ 12 декабря 2011

В этом уроке: http://learningwebgl.com/blog/?p=28 мы рисуем треугольник и квадрат в трехмерном пространстве, и я хочу получить координаты x, y вершин на холсте.

Итак, я хочу получить 2d координаты этих вершин: http://s11.postimage.org/ig6irk9lf/static.png

Извините за мой плохой английский, надеюсь, вы понимаете это.

Ответы [ 2 ]

5 голосов
/ 12 декабря 2011

Вы должны сделать тот же расчет, что и WebGL. Требуется трехмерная точка [X,Y,Z] до однородной точки [x,y,z,w] через

[x,y,z,w] = pMatrix * mvMatrix * [X,Y,Z,1]

Чтобы получить координаты пространства клипа, разделите на w:

[x/w,y/w,z/w]

x/w и y/w находятся в диапазоне [-1,1]. Чтобы преобразовать их в координаты области просмотра, масштабируйте их в соответствии с размером холста.

[x/w,y/w] -> [(1 + x/w)*canvas.width/2, (1 - y/w)*canvas.height/2]

Обратите внимание, как 'направление' координаты y изменяется в последнем преобразовании.

Для получения дополнительной информации вы можете Google "графический конвейер". Например. http://en.wikipedia.org/wiki/Graphics_pipeline

0 голосов
/ 12 декабря 2011

Вы должны сделать математику, чтобы вычислить их вручную.WebGL вычисляет их только для своих собственных целей, а именно: рендеринг.

Desktop GL имеет способы вернуть эти позиции (преобразовать обратную связь), а WebGL - нет.

...