我做了一个窗口大小的800x600。我打电话给
gluOrtho2D(-400,400,-300,300);
glViewport(400,300,400,300);我画了一条从(-100,-100)到(100,100)的线。我想我应该看到从(0,0)到(100,100)的一行,但我看到的是整个行。为什么会这样呢?
发布于 2009-12-18 03:28:52
理论上,glViewport doesn'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
希望这能有所帮助!
https://stackoverflow.com/questions/1923658
复制相似问题