GPUImage源码解读(二)
一 GLProgram
- (id)initWithVertexShaderString:(NSString *)vShaderString
fragmentShaderString:(NSString *)fShaderString;
- (id)initWithVertexShaderString:(NSString *)vShaderString
fragmentShaderFilename:(NSString *)fShaderFilename;
- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename
fragmentShaderFilename:(NSString *)fShaderFilename;- (id)initWithVertexShaderString:(NSString *)vShaderString
fragmentShaderString:(NSString *)fShaderString;
{
if ((self = [super init]))
{
_initialized = NO;
// 初始化属性数组
attributes = [[NSMutableArray alloc] init];
// 初始化uniform属性数组
uniforms = [[NSMutableArray alloc] init];
// 创建着色器程序
program = glCreateProgram();
// 编译顶点着色器
if (![self compileShader:&vertShader
type:GL_VERTEX_SHADER
string:vShaderString])
{
NSLog(@"Failed to compile vertex shader");
}
// 编译片源着色器
// Create and compile fragment shader
if (![self compileShader:&fragShader
type:GL_FRAGMENT_SHADER
string:fShaderString])
{
NSLog(@"Failed to compile fragment shader");
}
// 将顶点片源着色器附着到着色器程序
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
}
return self;
}Last updated