Android OpenGL 入门之路(5.1视口Viewport 和 坐标)

前期文章:

这篇文章主要说明OpenGL里面视口和坐标相关的知识,

Viewport 视口坐标系

设置了MyRender,并实现内部的三个函数

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
   glViewport(0, 0, width, height);
}
@Override
public void onDrawFrame(GL10 gl) {
}

	 @Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

在onSurfaceChanged中,我们调用了glViewport方法,Viewport为视口,其函数如下:

glViewport(x, y, width, height);

在渲染之前,我们必须告诉OpenGL渲染窗口的尺寸大小,即OpenGL应该把渲染之后的图形绘制在窗口的哪个部位。

参数x,y指定了视见区域的宽度和高度,即窗口左下角的位置。width,height,参数控制渲染窗口的宽度和高度(像素)。

视口坐标系是标准的笛卡尔直角坐标系,如下图:如果我们设置x,y为0,0,宽度和高度为屏幕的坐标,那么显示的就是GLSurview所在的全部区域。
在这里插入图片描述
如果我们改变x = 50, y = 100那么就会如下所示。
在这里插入图片描述

Window 窗口坐标系

视口坐标系和窗口坐标系是不同的,窗口坐标系的0,0位置是位于左上角的,对比如下图1:窗口坐标和 图2: 视口坐标
在这里插入图片描述
图1:窗口坐标

在这里插入图片描述
视口坐标

在android,我们操作点击位置的坐标系为窗口坐标系,要和OpenGL显示的视口坐标系区分开。

OpenGL 程序坐标

以上说的都是实际的屏幕的物理坐标,在代码处理中,无论是x坐标还是y坐标,OpenGL都会把屏幕映射到[-1,1]的范围内。这意味着屏幕的坐标对应x轴的-1,屏幕的右边对应+1,屏幕的底边对应y轴的-1,屏幕的顶边对应+1。如下图显示:
在这里插入图片描述
因此,不管屏幕是什么形状和大小,始终都会映射到[-1,1]之间,实际在编写相应代码中,顶点位置的坐标也始终在[-1,1]之间。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值