glViewport到底应该怎么用??

树先生1991 2010-11-22 09:30:35

void init()
{
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glColor3f( 1.0, 1.0, 1.0 );

glMatrixMode( GL_PROJECTION);
glLoadIdentity();
//定义剪裁面
gluOrtho2D( -1.0, 1.0, -1.0, 1.0 );
}

void display(void)
{
//glMatrixMode( GL_MODELVIEW );
//glLoadIdentity();

glClear( GL_COLOR_BUFFER_BIT );

glColor3f( 1.0, 0.0, 0.0 );
//画分割线,分成四个视见区
//glViewport( 0, 0, 400, 400 );
glBegin( GL_LINES );
glVertex2f( -1.0, 0 );
glVertex2f( 1.0, 0 );
glVertex2f( 0.0, -1.0 );
glVertex2f( 0.0, 1.0 );
glEnd();

//定义在左下角的区域
glColor3f( 0.0, 1.0, 0.0 );
glViewport( 0, 0, 200, 200 );
glBegin( GL_POLYGON );
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );
glEnd();


//定义在右上角的区域
glColor3f( 0.0, 0.0, 1.0 );
glViewport( 200, 200, 200, 200 );//一定要注意,后面这两个参数是高度和宽度,而不是坐标
glBegin( GL_POLYGON );
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );
glEnd();

//定义在左上角的区域
glColor3f( 1.0, 0.0, 1.0 );
glViewport( 0, 200, 200, 200 );//一定要注意,后面这两个参数是高度和宽度,而不是坐标
glBegin( GL_POLYGON );
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );
glEnd();

//定义在右下角
glColor3f( 1.0, 1.0, 0.0 );
glViewport( 200, 0, 200, 200 );//一定要注意,后面这两个参数是高度和宽度,而不是坐标
glBegin( GL_POLYGON );
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );
glEnd();

glFlush();


}


这个glViewport函数的坐标是怎么定的,是Opengl坐标还是windows坐标,还有那个高度和宽度是怎么设置的,
不是在gluOrtho2D( -1.0, 1.0, -1.0, 1.0 );中已经把高 宽都设置成2 了吗??
有哪位大牛可以讲讲,主要是这个视角变换我不太懂,尽量详细。。。谢谢
...全文
1149 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
everygreen5000 2010-11-23
  • 打赏
  • 举报
回复
设置像素点
树先生1991 2010-11-23
  • 打赏
  • 举报
回复
怎么没人啊???
树先生1991 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wqhua 的回复:]
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );

呵呵,帮顶一下
顺便问一下
这里的坐标为什么都是(-1,1)之间的?
我刚接触OPENGL,有点困惑。借宝地问一下。 glVertex2f( -50, 500 );就一片……
[/Quote]

因为在opengl中坐标:默认窗口中心是(0,0),最左边是-1,右边是1,最上边是1,最下边是-1,
也可以通过其它函数改为windows坐标。。。

还是没人回答我的问题啊???郁闷
wqhua 2010-11-23
  • 打赏
  • 举报
回复
glVertex2f( -0.5, -0.5 );
glVertex2f( -0.5, 0.5 );
glVertex2f( 0.5, 0.5 );
glVertex2f( 0.5, -0.5 );

呵呵,帮顶一下
顺便问一下
这里的坐标为什么都是(-1,1)之间的?
我刚接触OPENGL,有点困惑。借宝地问一下。 glVertex2f( -50, 500 );就一片黑了。为什么?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧