zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Hadoop生态圈-Azkaban实战之Command类型执行指定脚本
    Hadoop基础-MapReduce的排序
    Hadoop生态圈-Azkaban实战之Command类型多job工作流flow
    Hadoop生态圈-Azkaban部署实战
    SHELL脚本编程循环篇-until循环
    Hadoop生态圈-Kafka配置文件详解
    Hadoop生态圈-使用Kafka命令在Zookeeper中对应关系
    Hadoop生态圈-Kafka的旧API实现生产者-消费者
    Apache Kafka运维常用命令
    企业级Apache Kafka部署实战篇
  • 原文地址:https://www.cnblogs.com/helloc14/p/12295146.html
Copyright © 2011-2022 走看看