Esempio n. 1
0
/**
 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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
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;
}
Esempio n. 4
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;
}