前言
在前文
一、配置OpenGL ES渲染的上下文EAGLContext(context)
二、配置渲染的图层layer(rendering layer)
三、配置渲染缓冲区和帧缓冲区(renderBuffer and frameBuffer )
四、着色器着色(user vertextShader and framentShader)
《OpenGL ES 创建窗口》代码的基础上进行编码。在前面提到可编程管线通过用 shader 语言编写脚本文件实现的,这些脚本文件相当于 C 源码,有源码就需要编译链接,因此需要对应的编译器与链接器,shader 对象与 program 对象就相当于编译器与链接器。shader 对象载入源码,然后编译成 object 形式(就像C源码编译成 .obj文件)。经过编译的 shader 就可以装配到 program 对象中,每个 program对象必须装配两个 shader 对象:一个顶点 shader,一个片元 shader,然后 program 对象被连接成“可执行文件”,这样就可以在 render 中是由该“可执行文件”了。
完成图2,3配置以后,开始创建顶点着色器和片段着色器,并创建着色器程序链接顶点和片段着色器
1、首先,我们向工程中添加新的类 OpenGLESUtils,让它继承自 NSObject
OpenGLESUtils.h文件内容为下图
OpenGLESUtils.m文件内容为:
//
// OpenGLESUtils.m
// OpenGL_ Triangle
//
// Created by Mr_zhang on 17/4/7.
// Copyright © 2017年 Mr_zhang. All rights reserved.
//
#import "OpenGLESUtils.h"
@implementation OpenGLESUtils
+ (GLuint)loadShaderProgram:(GLenum)type withFilepath:(NSString *)shaderFilepath
{
NSError