/** Loads a shader, where <I>basename</I> contains the path and filename up to the ".vrt"/".pix" extensions, and <I>defines</I> is a string to prepend to the beginning of both vertex and pixel shaders. */ static ShaderRef loadShader(const std::string& baseName, const std::string& defines) { const std::string& vertexShader = loadShaderCode(baseName + ".vrt"); const std::string& pixelShader = loadShaderCode(baseName + ".pix"); ShaderRef s = Shader::fromStrings (baseName + ".vrt", defines + vertexShader, baseName + ".pix", defines + pixelShader); return s; }
bool Shader::loadFragShader(const char* shaderFile) { mFragShaderID = loadShaderCode(shaderFile, GL_FRAGMENT_SHADER); if (mFragShaderID == 0) { std::cout << "(initShader) - Could not create vertex shader." << std::endl; } return mFragShaderID != 0; }
bool Shader::loadVertShader(const char* shaderFile) { mVertShaderID = loadShaderCode(shaderFile, GL_VERTEX_SHADER); if (mVertShaderID == 0) { std::cout << "(initShader) - Could not create vertex shader." << std::endl; } return mVertShaderID != 0; }
GLuint createShader(const char* vertexProgramCode, const char* fragmentProgramCode) { GLuint program = 0; program = glCreateProgram(); // check if operation failed // if (program == 0) { std::cout << "(initShader) - Failed creating shader program." << std::endl; return 0; } GLuint vertexShader = 0; GLuint fragmentShader = 0; if (!loadShaderCode(vertexProgramCode, vertexShader, fragmentProgramCode, fragmentShader)) { glDeleteProgram(program); return 0; } if (!attachAndLink(program, vertexShader, fragmentShader)) { glDeleteProgram(program); return 0; } return program; }