MCPcopy Create free account
hub / github.com/android/ndk-samples / createProgram

Function createProgram

gles3jni/app/src/main/cpp/gles3jni.cpp:73–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73GLuint createProgram(const char* vtxSrc, const char* fragSrc) {
74 GLuint vtxShader = 0;
75 GLuint fragShader = 0;
76 GLuint program = 0;
77 GLint linked = GL_FALSE;
78
79 vtxShader = createShader(GL_VERTEX_SHADER, vtxSrc);
80 if (!vtxShader) goto exit;
81
82 fragShader = createShader(GL_FRAGMENT_SHADER, fragSrc);
83 if (!fragShader) goto exit;
84
85 program = glCreateProgram();
86 if (!program) {
87 checkGlError("glCreateProgram");
88 goto exit;
89 }
90 glAttachShader(program, vtxShader);
91 glAttachShader(program, fragShader);
92
93 glLinkProgram(program);
94 glGetProgramiv(program, GL_LINK_STATUS, &linked);
95 if (!linked) {
96 ALOGE("Could not link program");
97 GLint infoLogLen = 0;
98 glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLen);
99 if (infoLogLen) {
100 GLchar* infoLog = (GLchar*)malloc(infoLogLen);
101 if (infoLog) {
102 glGetProgramInfoLog(program, infoLogLen, NULL, infoLog);
103 ALOGE("Could not link program:\n%s\n", infoLog);
104 free(infoLog);
105 }
106 }
107 glDeleteProgram(program);
108 program = 0;
109 }
110
111exit:
112 glDeleteShader(vtxShader);
113 glDeleteShader(fragShader);
114 return program;
115}
116
117static void printGlString(const char* name, GLenum s) {
118 const char* v = (const char*)glGetString(s);

Callers 2

initMethod · 0.70
initMethod · 0.70

Calls 2

createShaderFunction · 0.85
checkGlErrorFunction · 0.70

Tested by

no test coverage detected