Hi, i am very newbie in OpenGL and Shaders, i would like to use OpenGl to color conversion, and alpha blending (PowerVr SGX 530), could you help me? I have written this so far, but shaders doesnt work, what i am doing wrong?

Code :
#include <stdio.h>
#include <stdlib.h>
 
#include <../include/EGL/egl.h>
#include <../include/EGL/eglext.h>
#include <../include/GLES2/gl2.h>
#include <../include/GLES2/gl2ext.h>
 
int main() {
 
	EGLDisplay eglDisplay = 0;
	EGLConfig eglConfig = 0;
	EGLSurface eglSurface = 0;
	EGLContext eglContext = 0;
 
	eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
	EGLint iMajorVersion, iMinorVersion;
	eglInitialize(eglDisplay, &iMajorVersion, &iMinorVersion);
 
	EGLint pi32ConfigAttribs[5];
	pi32ConfigAttribs[0] = EGL_SURFACE_TYPE;
	pi32ConfigAttribs[1] = EGL_WINDOW_BIT;
	pi32ConfigAttribs[2] = EGL_RENDERABLE_TYPE;
	pi32ConfigAttribs[3] = EGL_OPENGL_ES2_BIT;
	pi32ConfigAttribs[4] = EGL_NONE;
 
	EGLint pi32ContextAttribs[3];
	pi32ContextAttribs[0] = EGL_CONTEXT_CLIENT_VERSION;
	pi32ContextAttribs[1] = 2;
	pi32ContextAttribs[2] = EGL_NONE;
 
	int iConfigs;
	eglChooseConfig(eglDisplay, pi32ConfigAttribs, &eglConfig, 1, &iConfigs);
	eglSurface = eglCreatePbufferSurface(eglDisplay, eglConfig, NULL);
	eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, pi32ContextAttribs);
	eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
 
	int renderBufferWidth = 1280;
	int renderBufferHeight = 720;
 
	// now the FBO
	GLuint fbo = 0;
	glGenFramebuffers(1, &fbo);
	glBindFramebuffer(GL_FRAMEBUFFER, fbo);
 
	GLuint renderBuffer = 0;
	glGenRenderbuffers(1, &renderBuffer);
	glBindRenderbuffer(GL_RENDERBUFFER, renderBuffer);
	glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB565, renderBufferWidth, renderBufferHeight);
 
	glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderBuffer);
 
	GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
	if (status != GL_FRAMEBUFFER_COMPLETE) {
		printf("Problem with OpenGL framebuffer after specifying color render buffer: %x", status);
	}
 
	const char* pszFragShader =
			"void main (void) { gl_FragColor = vec4(0.0, 0.0, 0.0 , 0.0); }";
 
	GLuint uiFragShader, uiVertShader; // Used to hold the fragment and vertex shader handles
	GLuint uiProgramObject; // Used to hold the program handle (made out of the two previous shaders
	uiFragShader = glCreateShader(GL_FRAGMENT_SHADER);
	glShaderSource(uiFragShader, 1, (const char**) &pszFragShader, NULL);
	glCompileShader(uiFragShader);
	GLint bShaderCompiled;
	glGetShaderiv(uiFragShader, GL_COMPILE_STATUS, &bShaderCompiled);
 
	uiProgramObject = glCreateProgram();
 
	printf("\n program object =  %d", uiProgramObject);
 
	glAttachShader(uiProgramObject, uiFragShader);
 
	glLinkProgram(uiProgramObject);
 
	GLfloat vVertices[] = { -1.0f, -1.0f, 0.0f, -1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f,
			0.0f };
 
	glViewport(0, 0, renderBufferWidth, renderBufferHeight);
	glClearColor(1.0f, 0.0f, 1.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT);
 
	glUseProgram(uiProgramObject);
 
	glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, vVertices);
	glEnableVertexAttribArray(0);
	glDrawArrays(GL_TRIANGLES, 0, 4);
	eglSwapBuffers(eglDisplay, eglSurface);
 
	GLuint * data = (GLuint *) malloc(renderBufferWidth * renderBufferHeight * sizeof(GLuint));
	glReadPixels(0, 0, renderBufferWidth, renderBufferHeight, GL_RGBA, GL_UNSIGNED_BYTE, data);
 
	printf("\npixel = %u", data[2]);
 
	return 0;
}