uiacceltk/hitchcock/backgroundanim/refplugin/src/shader.c
changeset 0 15bf7259bb7c
child 7 433cbbb6a04b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/backgroundanim/refplugin/src/shader.c	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GLES2/gl2.h>
+#include <sys/syslimits.h>
+
+#include "shader.h"
+
+
+GLuint LoadAndCompileShader(char* path, char* shadername, GLenum type)
+    {
+    char filename[PATH_MAX];
+    int len = 0;
+    GLuint shader = 0;
+    GLint compiled = 0;
+    char* shaderdata = NULL;
+    FILE* file;
+    
+    strcpy(filename,path);
+    strcat(filename,"\\");
+    strcat(filename,shadername);
+    file = fopen(filename,"rb");
+    if (!file)
+        {
+        return 0;
+        }
+        
+
+    fseek (file, 0, SEEK_END);
+    len = ftell (file);
+    fseek(file, 0, SEEK_SET);
+
+    shaderdata = (char*)malloc(len+1);
+    if (!shaderdata)
+        {
+        fclose(file);
+        return 0;
+        }
+    
+    fread(shaderdata, 1, len, file);
+    fclose(file);
+    shaderdata[len] = 0;
+
+    
+    shader = glCreateShader(type);
+    glShaderSource(shader, 1, (const char**)&shaderdata,NULL);
+    glCompileShader(shader);
+    glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);    
+    
+    if (!compiled)
+        {
+        char infobuf[ 256 ];
+
+        glGetShaderInfoLog( shader, 256, NULL, infobuf );
+
+        glDeleteShader(shader);
+        shader = 0;
+        }
+    free(shaderdata);
+    return shader;
+    }