Android OpenGL画第一个图形(一)


接着上篇,我们接下来将通过OpenGL ES实现一个简单的几何图形显示,在本次学习过程中我们将会了解到OpenGL的坐标系、顶点、着色器、OpenGL程序以及OpenGL开发过程中的调试相关知识。

考虑到篇幅可能会过长,所以本次的内容我将会分为两篇编写,本篇我们首先了解OpenGL ES的坐标系,顶点和着色器。而在下一篇我们将会就本篇的顶点,着色器编译及关联并绘制出我们第一个图形。

OpenGL中的坐标系

OpenGL如何将定义的坐标映射到屏幕上的实际物理坐标是一个复杂的问题,随着对OpenGL更深入的了解,我们将会逐渐了解更多内容。

目前,我们只需要知道无论是x还是y坐标,OpenGL 都会把屏幕会映射到[-1,1]的范围内。对应关系为屏幕左侧对应x轴的-1,屏幕右侧对应x轴的+1,屏幕底部对应y轴的-1,屏幕顶部对应y轴的+1。不论屏幕的实际形状和大小如何,OpenGL都会使用相同的坐标范围进行映射。要在屏幕上显示任何内容,都需要在这个标准化的坐标范围内进行绘制。

在这里插入图片描述

定义矩形结构

在通过OpenGL画图形之前,我们需要告知OpenGL要画什么。在这里我们要画的第一个图形是二维的矩形。所以我们开发的第一步就是以OpenGL能理解的形式定义一个矩形结构。在OpenGL里,所有东西的结构都是从一个顶点开始的。

1. 顶点介绍

所谓的顶点即一个代表几何对象拐角的点。顶点具有多个附加属性,其中最重要的是位置属性。位置属性决定了顶点在空间中的具体定位。

2. OpenGL中的基本图形

在OpenGL只能绘制点、直线和三角形。三角形是最基本的几何图形,因其结构稳定而被广泛应用于构建复杂对象和纹理的场景。

三角形是构建复杂图形的基础。点和支线可以用于某些效果,但是只有三角形才能用来构建拥有复杂的对象和纹理的场景。在OpenGL里我们把单独的点放在一个组里构建出三角形,再告诉OpenGL如何连接这些点。

我们想要构建的所有东西都要用点、直线和三角形定义。如果想要构建更复杂的图形,例如拱形,那么我们就需要用足够的点拟合这样的曲线。

虽然我们本篇是要画一个矩形,但实际上,矩形可以被看作是由两个三角形组成的。这意味着需要使用点来构建三角形,并将这些三角形组合起来形成矩形的形状。

3. 在代码中定义矩形

一个矩形有4个拐角,因此需要4个顶点来定义其形状。每个顶点都需要一个位置,这个位置在二维空间中由两个坐标(通常是x和y坐标)确定。

接下来让我们写一些代码来存储这些顶点,顶点是二维坐标系中的点,每个顶点需要用两个浮点数来标记其位置,一个表示x轴的位置,另一个表示y轴的位置。

因为一个顶点有两个分量,因此让我们定义了一个常量来记录这个事实。

    private val POSITION_COMPONENT_COUNT = 2

    private var rectangleVertices  = floatArrayOf(
        -0.5f , -0.5f,
         0.5f ,  0.5f,
        -0.5f ,  0.5f,

        -0.5f , -0.5f,
         0.5f , -0.5f,
         0.5f ,  0.5f
    )

在这里使用了浮点数的顺序列表来定义顶点数据,这种数组通常被称为顶点属性(attribute

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值