//shaers.cpp
#include <stdafx.h>
#include "Shaders.h"
int Shaders::Init(char * fileVertexShader, char * fileFragmentShader)
{
vertexShader = esLoadShader(GL_VERTEX_SHADER, fileVertexShader);
if ( vertexShader == 0 )
return -1;
fragmentShader = esLoadShader(GL_FRAGMENT_SHADER, fileFragmentShader);
if ( fragmentShader == 0 )
{
glDeleteShader( vertexShader );
return -2;
}
program = esLoadProgram(vertexShader, fragmentShader);
//finding location of uniforms / attributes
positionAttribute = glGetAttribLocation(program, "a_posL");
colorAttribute = glGetAttribLocation(program, "a_color");
matrixTransform = glGetUniformLocation(program, "u_matT");
uvAttrib = glGetAttribLocation(program, "a_uv");
textureUniform = glGetUniformLocation (program,"v_uv");
return 0;
}
Shaders::~Shaders()
{
glDeleteProgram(program);
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
}
Ly9zaGFlcnMuY3BwCiNpbmNsdWRlIDxzdGRhZnguaD4KI2luY2x1ZGUgIlNoYWRlcnMuaCIKCmludCBTaGFkZXJzOjpJbml0KGNoYXIgKiBmaWxlVmVydGV4U2hhZGVyLCBjaGFyICogZmlsZUZyYWdtZW50U2hhZGVyKQp7Cgl2ZXJ0ZXhTaGFkZXIgPSBlc0xvYWRTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgZmlsZVZlcnRleFNoYWRlcik7CgoJaWYgKCB2ZXJ0ZXhTaGFkZXIgPT0gMCApCgkJcmV0dXJuIC0xOwoKCWZyYWdtZW50U2hhZGVyID0gZXNMb2FkU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZmlsZUZyYWdtZW50U2hhZGVyKTsKCglpZiAoIGZyYWdtZW50U2hhZGVyID09IDAgKQoJewoJCWdsRGVsZXRlU2hhZGVyKCB2ZXJ0ZXhTaGFkZXIgKTsKCQlyZXR1cm4gLTI7Cgl9CgoJcHJvZ3JhbSA9IGVzTG9hZFByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CgoJLy9maW5kaW5nIGxvY2F0aW9uIG9mIHVuaWZvcm1zIC8gYXR0cmlidXRlcwoJcG9zaXRpb25BdHRyaWJ1dGUgPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3Bvc0wiKTsKCWNvbG9yQXR0cmlidXRlID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9jb2xvciIpOwoJbWF0cml4VHJhbnNmb3JtID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfbWF0VCIpOwoKCXV2QXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV91diIpOwoJdGV4dHVyZVVuaWZvcm0gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAocHJvZ3JhbSwidl91diIpOwoKCglyZXR1cm4gMDsKfQoKU2hhZGVyczo6flNoYWRlcnMoKQp7CglnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CglnbERlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwoJZ2xEZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwp9