bool YVURenderer::InitializeGLProgram() { bool succeeded = false; do { GLuint glProgram; glProgram = createProgram(VertexShaderSource(), FragmentShaderSource()); if (!glProgram) { break; } glUseProgram(glProgram); if (!checkGlError("glUseProgram")) break; // Get attribute locations mPositionLoc = glGetAttribLocation(glProgram, "a_Position"); mTexCoordLoc = glGetAttribLocation(glProgram, "a_texCoord"); // Get sampler location mSamplerLoc = glGetUniformLocation(glProgram, "s_texture"); mGlProgram = glProgram; succeeded = true; } while (false); if (!succeeded && (mGlProgram != 0)) { glDeleteProgram(mGlProgram); checkGlError("glDeleteProgram"); mGlProgram = 0; } return succeeded; }
bool SurfaceTextureRenderer::InitializeGLProgram() { bool succeeded = false; do { GLuint glProgram; glProgram = createProgram(VertexShaderSource(), FragmentShaderSource()); if (!glProgram) { break; } glUseProgram(glProgram); if (!checkGlError("glUseProgram")) break; maPositionHandle = glGetAttribLocation(glProgram, "aPosition"); checkGlError("glGetAttribLocation aPosition"); maTextureHandle = glGetAttribLocation(glProgram, "aTextureCoord"); checkGlError("glGetAttribLocation aTextureCoord"); muSTMatrixHandle = glGetUniformLocation(glProgram, "uSTMatrix"); checkGlError("glGetUniformLocation uSTMatrix"); mScalingtransLoc = glGetUniformLocation(glProgram, "u_scalingtrans"); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); mGlProgram = glProgram; succeeded = true; } while (false); if (!succeeded && (mGlProgram != 0)) { glDeleteProgram(mGlProgram); checkGlError("glDeleteProgram"); mGlProgram = 0; } return succeeded; }