最近由于项目需要,所以开始学习OpenGL,网络上的东西零零散散,所以就想写一系列博客来记录学习OpenGL。
一、简介
首先我们要对其有一个简单的认识
什么是OpenGL?
官方描述:OpenGL是一个跨平台的图形API,用于指定3D图形处理硬件中的标准软件接口。
OpenGL的优势?
OpenGl是用来做图像处理的,那我们为什么不使用Canvas呢?费劲学这个干嘛?
答案很简单,为了效率,使用Canvas画图使用的是CPU,那我们都知道手机上还有一个专门的图形处理单元叫GPU,它可以并行的做浮点运算,OpenGL使用的就是GPU,这样的话可以用GPU分担CPU的工作量,提高图形渲染效率。
概念
顶点着色器:它的作用就是为每一个顶点生成坐标,因此每个顶点都要运行一遍顶点着色器程序,一旦顶点坐标计算出来之后,OpenGL就能够使用这些顶点来组成点,线,面。
片段着色器:它的作用就是为每一个顶点的片段渲染颜色。
坐标系:原点在中心,范围为[-1,1],2d环境只有(x,y),3d环境有(x,y,z)
二、画个三角形
1.创建GLSurfaceView
了解了基础概念之后我们就开始上代码,要使用OpenGL进行绘制就必须要有一个地方来供它绘制,它既然是使用GPU进行计算的,那这块地方就肯定与Canvas有所不同,这个地方就是GLSurfaceView,它是android为我们提供的一个类,继承于SurfaceView,也就是说它管理着一块Surface。
要创建SurfaceView可以使用new来创建,也可以在xml中书写
GLSurfaceView glSurfaceView=new GLSurfaceView(context);
setContentView(glSurfaceView);
或者
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.opengl.GLSurfaceView
android:id=&#