forked from zhanxiaokai/iOS-OpenGLRenderer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRGBAFrameCopier.h
executable file
·84 lines (67 loc) · 1.96 KB
/
RGBAFrameCopier.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//
// RGBAFrameCopier.h
// OpenGLRenderer
//
// Created by apple on 2017/2/9.
// Copyright © 2017年 xiaokai.zhan. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <OpenGLES/ES2/gl.h>
#import <OpenGLES/ES2/glext.h>
static inline BOOL validateProgram(GLuint prog)
{
GLint status;
glValidateProgram(prog);
#ifdef DEBUG
GLint logLength;
glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength);
if (logLength > 0)
{
GLchar *log = (GLchar *)malloc(logLength);
glGetProgramInfoLog(prog, logLength, &logLength, log);
NSLog(@"Program validate log:\n%s", log);
free(log);
}
#endif
glGetProgramiv(prog, GL_VALIDATE_STATUS, &status);
if (status == GL_FALSE) {
NSLog(@"Failed to validate program %d", prog);
return NO;
}
return YES;
}
static inline GLuint compileShader(GLenum type, NSString *shaderString)
{
GLint status;
const GLchar *sources = (GLchar *)shaderString.UTF8String;
GLuint shader = glCreateShader(type);
if (shader == 0 || shader == GL_INVALID_ENUM) {
NSLog(@"Failed to create shader %d", type);
return 0;
}
glShaderSource(shader, 1, &sources, NULL);
glCompileShader(shader);
#ifdef DEBUG
GLint logLength;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
if (logLength > 0)
{
GLchar *log = (GLchar *)malloc(logLength);
glGetShaderInfoLog(shader, logLength, &logLength, log);
NSLog(@"Shader compile log:\n%s", log);
free(log);
}
#endif
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
if (status == GL_FALSE) {
glDeleteShader(shader);
NSLog(@"Failed to compile shader:\n");
return 0;
}
return shader;
}
@interface RGBAFrameCopier : NSObject
- (BOOL) prepareRender:(NSInteger)textureWidth height:(NSInteger)textureHeight;
- (void) renderFrame:(uint8_t*) rgbaFrame;
- (void) releaseRender;
@end