首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gluortho2d和glViewport之间的实际区别是什么

gluortho2d和glViewport之间的实际区别是什么
EN

Stack Overflow用户
提问于 2009-12-18 02:28:11
回答 2查看 7K关注 0票数 3

我做了一个窗口大小的800x600。我打电话给

代码语言:javascript
运行
复制
gluOrtho2D(-400,400,-300,300);
glViewport(400,300,400,300);

我画了一条从(-100,-100)(100,100)的线。我想我应该看到从(0,0)(100,100)的一行,但我看到的是整个行。为什么会这样呢?

EN

回答 2

Stack Overflow用户

发布于 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

希望这能有所帮助!

票数 10
EN

Stack Overflow用户

发布于 2009-12-18 08:12:59

glViewport描述将由OpenGL绘制的窗口区域。glOrtho或gluOrtho2D定义了适合(通过glViewport定义)区域的单位系统(OpenGL单位)。因此,您的线将在视口中绘制,范围为-100,-100到100,100

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1923658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档