2009-12-17 3 views

ответ

10

В теории, glViewportdoesn't cause any clipping (see section 10). Обычно все чертежи привязаны к окну. Поскольку вы попросили OpenGL рисовать в область вашего окна, вам также нужно указать OpenGL для клипа координаты за пределами этого окна просмотра. Для этого вам понадобится glScissor. Тем не менее, некоторые реализации делают клип их рисунок в окне просмотра (см. Мой комментарий для деталей).

Кроме того, ваша математика ошибочна. Ваша проекционная матрица составляет 800 единиц в ширину на 600 единиц в высоту, с центром в (0, 0). Затем он отображается на часть окна шириной 400 пикселей на 300 пикселей в верхнем правом углу окна.

Если вы нарисуете линию от (-100, -100) до (100, 100), она будет распространяться только на небольшую часть вашего обзора. Фруст имеет размер, соответствующий размеру окна просмотра.

На изображении синяя коробка - это окно, а красная коробка представляет собой окно просмотра. Черная линия должна быть чертой, которую вы нарисовали.

An image describing what the paragraph says. http://img696.imageshack.us/img696/6541/opengl.png

Надежда, что помогает!

+0

Ya спасибо за ответ ................... я думаю, что получаю повесить его – codemax

+0

Да. Сначала это может быть сложно. В конце концов, вы обнаружите, что это вторая натура. –

+1

Я пытался доказать, что glViewport не делает никаких клипов, но каждый раз, когда я пытаюсь, я вижу его клип. Например, нарисуйте треугольник из (0, 3), (3, -3), (-3, 3). См. Обрезанный треугольник. Установите glViewport (windowWidth/4, windowHeight, windowWidth/2, windowHeigth/2); Эффективно видеть тот же обрезанный треугольник в центре дисплея. Если glViewport не делал никаких отсечений, я ожидал бы увидеть больше треугольника, но я этого не сделаю. Что я не получу? – gman

0

glViewport описывает область вашего окна, которая будет нарисована OpenGL. glOrtho или gluOrtho2D определяют единую систему (блоки OpenGL), которые вписываются в это (через определенную glViewport) область. Итак, ваша линия будет нарисована в пределах Viewport от -100, -100 до 100,100

+0

Спасибо за ответ ......... kinda got it – codemax

Смежные вопросы