• QGLShaderProgram类


    QGLShaderProgram:

    1)QGLShaderProgram类允许链接和使用OpenGL着色程序。

    2)这个类支持用OpenGL着色语言(GLSL)和OpenGL/ES着色语言(GLSL/ES)编写的着色程序。

    3)下面的示例使用提供的源代码创建顶点着色器程序。一旦编译并链接,着色器程序在当前的QGLContext中被激活,方法是调用QGLShaderProgram::bind():

    4)构造一个新的着色器程序并附属于父进程。直到调用addShader()这个函数前,该着色器程序是无效的。

    5)着色器程序会与当前的QGLContext进行关联。

    bool QGLShaderProgram::addShader(QGLShader *shader)

    1)添加一个编译完的着色器程序。成功返回true,否则返回false。

    2)shader的所有权仍由调用者持有。当QGLShaderProgram实例被销毁时,shader不会被销毁。

    3)它允许调用者添加相同的着色器到多个着色器程序中。

     

    bool QGLShaderProgram::addShaderFromSourceCode(QGLShader::ShaderType type, const char *source)

    1)将源代码编译成指定类型的着色器程序。如果编译成功返回true,否则false。编译产生的错误和警告信息通过log()函数获取。

    2)该函数被用于快速添加顶点和片元着色器,而不用创建事先创建QGLShader。

    [virtual] bool QGLShaderProgram::link()

    1)该函数会链接使用addShader()添加的着色器。

    2)成功返回true,否则false。如果链接失败,错误信息通过log()函数获取。

    3)子类可以覆盖该函数,用于初始化属性和统一变量,以便在特定的着色器程序中使用。

    4)如果着色器程序已经链接,调用该函数会强制重新链接。

    bool QGLShaderProgram::bind()

    1)绑定着色器程序到当前激活的QGLContxt,并使之成为当前的着色器程序。

    2)之前绑定的任何着色器程序都会被释放。

    3)这相当于在programId()上调用glUseProgram()。

    4)如果着色器程序成功绑定返回true,否则返回false。

    5)如果该着色器程序未链接,或者需要重新链接,该函数会调用link()函数。

    int QGLShaderProgram::attributeLocation(const char *name) const

    1)返回该属性在着色器程序参数列表中的索引数值。

    int QGLShaderProgram::uniformLocation(const char *name) const

    1)返回该统一变量名在着色器程序参数列表中的索引数值。

    void QGLShaderProgram::setAttributeValue(int location, GLfloat value)

    1)在当前上下文中,将location索引值位置的属性值设置未value。

  • 相关阅读:
    ecnu1624求交集多边形面积
    poj2986A Triangle and a Circle&&poj3675Telescope(三角形剖分)
    poj2194Stacking Cylinders
    zoj2589Circles(平面图的欧拉定理)
    poj1819Disks
    poj3334Connected Gheeves(二分)
    2014 Multi-University Training Contest 5
    hdu3264Open-air shopping malls(二分)
    poj1375Intervals(点到圆的切线)
    级数基础
  • 原文地址:https://www.cnblogs.com/helloc14/p/12295146.html
Copyright © 2020-2023  润新知