当前位置: 首页 > wzjs >正文

中小企业商务网站建设自助建设wap网站

中小企业商务网站建设,自助建设wap网站,jsp网站开发典型模块与实例精讲,宁波网站建设公司哪家比较好1. 概述 QOpenGLShaderProgram 是 Qt 框架中用于管理 OpenGL 着色器程序的类。它提供了一种方便的方式来创建、编译和链接着色器,以及管理着色器程序中的属性和统一变量。通过 QOpenGLShaderProgram,开发者可以轻松地将顶点着色器和片段着色器组合成一个…
1. 概述

QOpenGLShaderProgram 是 Qt 框架中用于管理 OpenGL 着色器程序的类。它提供了一种方便的方式来创建、编译和链接着色器,以及管理着色器程序中的属性和统一变量。通过 QOpenGLShaderProgram,开发者可以轻松地将顶点着色器和片段着色器组合成一个完整的着色器程序,并在 OpenGL 渲染中使用。

2. 重要函数
构造函数和析构函数
  • QOpenGLShaderProgram(QObject *parent = nullptr)
    构造一个新的着色器程序。

  • virtual ~QOpenGLShaderProgram()
    析构函数,删除着色器程序。

添加着色器
  • bool addShader(QOpenGLShader *shader)
    添加一个已编译的着色器。

  • bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)
    从源代码编译并添加着色器。

  • bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
    从 QByteArray 源代码编译并添加着色器。

  • bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
    从 QString 源代码编译并添加着色器。

  • bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)
    从文件编译并添加着色器。

缓存着色器
  • bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)
    编译并添加一个可缓存的着色器(源码为 C 字符串)。

  • bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
    编译并添加一个可缓存的着色器(源码为 QByteArray)。

  • bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
    编译并添加一个可缓存的着色器(源码为 QString)。

  • bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)
    从文件编译并添加一个可缓存的着色器。

链接和绑定
  • bool link()
    链接着色器程序。

  • bool bind()
    绑定着色器程序到当前的 OpenGL 上下文。

  • void release()
    释放当前绑定的着色器程序。

  • bool isLinked() const
    检查着色器程序是否已成功链接。

属性和统一变量
  • int attributeLocation(const char *name) const
    获取属性的位置。

  • int uniformLocation(const char *name) const
    获取统一变量的位置。

  • void setUniformValue(const char *name, const QVariant &value)
    设置统一变量的值。

  • void setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize)
    设置统一变量数组的值。

其他
  • QString log() const
    获取最近一次编译或链接操作的错误日志。

  • GLuint programId() const
    获取 OpenGL 着色器程序的 ID。

  • void removeAllShaders()
    移除所有着色器。

  • void removeShader(QOpenGLShader *shader)
    移除指定的着色器。

  • QVector<float> defaultInnerTessellationLevels() const
    获取默认的内部分割级别。

  • QVector<float> defaultOuterTessellationLevels() const
    获取默认的外部分割级别。

  • int maxGeometryOutputVertices() const
    获取几何着色器的最大输出顶点数。

  • int patchVertexCount() const
    获取补丁顶点数。

  • void setDefaultInnerTessellationLevels(const QVector<float> &levels)
    设置默认的内部分割级别。

  • void setDefaultOuterTessellationLevels(const QVector<float> &levels)
    设置默认的外部分割级别。

  • void setPatchVertexCount(int count)
    设置补丁顶点数。

静态成员函数

  • static bool hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)
    检查当前 OpenGL 上下文是否支持着色器程序。如果 contextnullptr,则使用当前上下文。

3. 重要信号

QOpenGLShaderProgram 没有提供信号。它主要用于着色器的管理和操作,不涉及信号与槽机制。

4. 常用枚举类型

QOpenGLShaderProgram 本身没有定义枚举类型,但与之紧密相关的 QOpenGLShader 类定义了以下枚举类型:

  • QOpenGLShader::ShaderType
    用于指定着色器的类型,如:

    • Vertex:顶点着色器

    • Fragment:片段着色器

    • Geometry:几何着色器

    • TessellationControl:细分控制着色器

    • TessellationEvaluation:细分评估着色器

#include "widget.h"float vertices[] = {// 位置              // 颜色0.5f, -0.5f, 0.0f,  1.0f, 0.0f, 0.0f,   // 右下-0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // 左下0.0f,  0.5f, 0.0f,  0.0f, 0.0f, 1.0f    // 顶部
};MyGLWidget::MyGLWidget(QWidget *parent) : QOpenGLWidget(parent) {}MyGLWidget::~MyGLWidget()
{glDeleteVertexArrays(1, &VAO);glDeleteBuffers(1, &VBO);
}void MyGLWidget::initializeGL()
{initializeOpenGLFunctions(); // 初始化 OpenGL 函数//创建、绑定VAOglGenVertexArrays(1, &VAO);glBindVertexArray(VAO);//创建、绑定VBO + 填充数据glGenBuffers(1, &VBO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);//设置顶点属性指针glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);// 颜色属性glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3* sizeof(float)));glEnableVertexAttribArray(1);//解绑缓冲区和 VAOglBindBuffer(GL_ARRAY_BUFFER, 0);glBindVertexArray(0);shader = new QOpenGLShaderProgram;if (!shader->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/shader/shader.vert")) {qDebug() << "Vertex shader compile failed:" << shader->log();return;}if (!shader->addShaderFromSourceFile(QOpenGLShader::Fragment, ":/shader/shader.frag")) {qDebug() << "Fragment shader compile failed:" << shader->log();return;}// 链接着色器程序if (!shader->link()){qDebug() << "Shader program link failed:" << shader->log();return;}
}void MyGLWidget::paintGL()
{glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲区shader->bind();glBindVertexArray(VAO);glDrawArrays(GL_TRIANGLES, 0, 3);glBindVertexArray(0);
}void MyGLWidget::resizeGL(int w, int h)
{glViewport(0, 0, w, h); // 设置视口大小
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 


文章转载自:

http://s6Nqr7Fw.kqrqL.cn
http://sG1TVBEd.kqrqL.cn
http://2V3QDXUU.kqrqL.cn
http://moWTJHmq.kqrqL.cn
http://DUALyeHU.kqrqL.cn
http://eQpdEZdu.kqrqL.cn
http://T0UWkK0H.kqrqL.cn
http://7wVwJMRn.kqrqL.cn
http://ORE9XaDU.kqrqL.cn
http://WOWKHfcG.kqrqL.cn
http://oPX6L1xg.kqrqL.cn
http://u8O1bMKt.kqrqL.cn
http://eNXndjSe.kqrqL.cn
http://5gktAKQc.kqrqL.cn
http://ZMHC1IfK.kqrqL.cn
http://GFvXH2JU.kqrqL.cn
http://Oaq5sycx.kqrqL.cn
http://CHHWUN2g.kqrqL.cn
http://sFXUXpRS.kqrqL.cn
http://NhxV7pAA.kqrqL.cn
http://rbioRXnW.kqrqL.cn
http://MytC2XnC.kqrqL.cn
http://vABYV6A0.kqrqL.cn
http://cvs2wKdT.kqrqL.cn
http://Oll0JSxQ.kqrqL.cn
http://NXvAorWl.kqrqL.cn
http://zC4UCTOK.kqrqL.cn
http://ZFqNnkyg.kqrqL.cn
http://mnlzkvZ4.kqrqL.cn
http://QTaSZB2P.kqrqL.cn
http://www.dtcms.com/wzjs/635310.html

相关文章:

  • 海洋cms做电影网站好做吗群晖wordpress端口
  • 微信 微网站ios开发者网站
  • 什么网站源码做分类信息网站好天津seo标准
  • wordpress 艺术 主题 2018长沙网络seo公司助企业突破
  • 做网站的相关术语你不会百度吗网页生成
  • 网站开发什么开发语言好做网站申请域名的流程
  • 无锡网站优化排名推广免费咨询骨科医生回答在线
  • 网站业务员好做吗php网站开发专员招聘
  • 写作的网站有哪些帝国cms做网站流程
  • 嘉兴城乡建设局门户网站python爬数据做网站
  • 广州海珠区赤岗 新港网站建设公司wordpress禁止采集
  • 启源网站建设没电脑可以建网站吗
  • 做vlogger的网站有哪些网站如何建设成直播间
  • wordpress首页很慢福州seo代理计费
  • 2021手机能看的网站网站开发难学吗
  • 丰涵网站建设科技高端网站源码
  • 石家庄网站开发费用常州网站建设公司如何
  • 购物网站创建珠海网站建设推广
  • 广州网站seo招聘vs2008做网站
  • php网站开发就业前景最大的购物平台
  • 有没有做公章的网站想学计算机怎么入门
  • 网站建设论文标题湖南长沙特产
  • 企业网站策划方案模板网站建设类外文翻译
  • 上海网站开发外包公司做系统去哪网站下载镜像
  • 酒店网站怎么制作设计公司起名常用字
  • 做音乐网站赚钱吗网站友链查询接口
  • 青岛机关建设网站陕西省建设网官方
  • 用asp.net做后台网站深圳营销型网站建设公司选择哪家好
  • 小说网站建设源码企业网站开发需要多钱
  • 太原网站建设需要多少钱北京建设银行官网