bool Shader::init(const char* vertexPath, const char* fragmentPath) { //create a vertex shader GLuint vertexShader = genShader(GL_VERTEX_SHADER, vertexPath); if (!vertexShader) { return false; } //create a fragment shader. GLuint fragmentShader = genShader(GL_FRAGMENT_SHADER, fragmentPath); if (!fragmentShader) { glDeleteShader(vertexShader); return false; } //Link the vertex shader and fragment shader. GLuint shader[2] = { vertexShader, fragmentShader }; mProgram = linkProgram(shader, 2); // Delete the shaders as they're linked into our program now and no longer necessery glDeleteShader(vertexShader); glDeleteShader(fragmentShader); return true; }
Render::Render() : particleTexture1(0), particleProgram1(0), particleTexture2(0), particleProgram2(0), particleFrameBuffer(0) { particleProgram1 = genProgram ( 0, genShader(GL_FRAGMENT_SHADER, particleFragmentShader1Source) ); particleProgram2 = genProgram ( genShader(GL_VERTEX_SHADER, particleVertexShader2Source), genShader(GL_FRAGMENT_SHADER, particleFragmentShader2Source) ); genParticleTexture1(); genParticleTexture2(); genParticleFrameBuffer(); }