日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QOpenGLWidget 第二篇EBO、VBO、VAO(绘制三棱锥)

發布時間:2024/3/12 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QOpenGLWidget 第二篇EBO、VBO、VAO(绘制三棱锥) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

頭文件?

#ifndef OPENGLWIDGET_H #define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer" #include "QtWidgets/QOpenGLWidget" #include "QtGui/QOpenGLVertexArrayObject" #include "QtGui/QOpenGLFunctions_4_5_Core"class QOpenGLShaderProgram;class OpenGLWidget: public QOpenGLWidget, protected QOpenGLFunctions_4_5_Core { public:/* @接口 默認構造函數* @類名 [OpenGLWidget]* @時間 2021年10月8號*/OpenGLWidget();/* @接口 默認析構* @類名 [OpenGLWidget]* @時間 2021年10月8號*/~OpenGLWidget();/* @接口* @返回* @類名 [OpenGLWidget]* @時間 2021年10月8號*/virtual void paintGL();/* @接口* @返回* @類名 [OpenGLWidget]* @時間 2021年10月8號*/virtual void initializeGL();/* @接口* @類名 [OpenGLWidget]* @時間 2021年10月8號*/virtual void resizeGL(int, int);private:/* @接口* @類名 [OpenGLWidget]* @時間 2021年10月17號*/bool initShader();/* @接口* @類名 [OpenGLWidget]* @時間 2021年10月17號*/void initQTimer();/* @接口* @類名 [OpenGLWidget]* @時間 2021年10月17號*/void updateTimer();private:float m_world = 0;QTimer *m_timer = NULL;QOpenGLBuffer m_vbo, m_ebo;QOpenGLVertexArrayObject m_vao;QOpenGLShaderProgram *m_shaderProgram;};#endif /*OPENGLWIDGET_H*/

源文件

#include "cellmath.hpp" #include "QtCore/QTimer" #include "openglwidget.h" #include "QOpenGLShaderProgram"const char *vertexShader = "#version 450 core \n" "in vec3 vPosition; \n" "in vec3 vColor; \n" "out vec4 outColor; \n" "uniform mat4 gWorld; \n" "void main() { \n" " gl_Position = gWorld * vec4(vPosition * 0.5, 1.0); \n" " outColor = vec4(vColor, 1.0); \n" "} \n";const char *fragmentShader = "#version 450 core \n" "in vec4 outColor; \n" "out vec4 FragColor; \n" "void main() { \n" " FragColor = outColor; \n" "} \n";OpenGLWidget::OpenGLWidget(): QOpenGLWidget(), m_vao(), m_ebo(QOpenGLBuffer::IndexBuffer), m_vbo(QOpenGLBuffer::VertexBuffer) {}OpenGLWidget::~OpenGLWidget() {}void OpenGLWidget::paintGL() {glClear(GL_COLOR_BUFFER_BIT);glClearColor(1.0f, 1.0f, 1.0f, 1.0f);QMatrix4x4 world; m_world += 1;world.rotate(m_world, 1, 0, 0);m_shaderProgram->setUniformValue("gWorld", world);m_vao.bind();glDrawElements(GL_TRIANGLES, 12, GL_UNSIGNED_INT, 0);m_vao.release(); }bool OpenGLWidget::initShader() {m_shaderProgram = new QOpenGLShaderProgram;m_shaderProgram->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShader);m_shaderProgram->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShader);if (!m_shaderProgram->link()) return false;return m_shaderProgram->bind(); }void OpenGLWidget::initQTimer() {m_timer = new QTimer; m_timer->start(1);connect(m_timer, &QTimer::timeout, this, &OpenGLWidget::updateTimer); }void OpenGLWidget::updateTimer() {repaint(); }void OpenGLWidget::initializeGL() {initializeOpenGLFunctions(); //初始化OPenGL功能函數glClearColor(0.0f, 1.0f, 1.0f, 1.0f);if (!initShader()) return;float vertices[] = {-1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.0f,0.0f, -1.0f, 1.0f, 0.0f, 1.0f, 0.0f,1.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f,0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f};GLuint indices[] = {0, 3, 1,1, 3, 2,2, 3, 0,0, 1, 2};m_vao.create();m_vao.bind();m_vbo.create();m_vbo.bind();m_vbo.allocate(vertices, 4 * 6 * sizeof(GLfloat));m_ebo.create();m_ebo.bind();m_ebo.allocate(indices, 4 * 3 * sizeof(GLuint));int attr = -1;//頂點屬性設置attr = m_shaderProgram->attributeLocation("vPosition");m_shaderProgram->setAttributeBuffer(attr, GL_FLOAT, 0, 3, sizeof(GLfloat) * 6);m_shaderProgram->enableAttributeArray(attr);//顏色屬性設置attr = m_shaderProgram->attributeLocation("vColor");m_shaderProgram->setAttributeBuffer(attr, GL_FLOAT, sizeof(GLfloat) * 3, 3, sizeof(GLfloat) * 6);m_shaderProgram->enableAttributeArray(attr);m_vao.release();m_vbo.release();m_ebo.release();initQTimer(); }void OpenGLWidget::resizeGL(int w, int h) {glViewport(0, 0, w, h); }

運行效果:

QOpenGLWidget 第一篇 VBO繪制三角形

QOpenGLWidget 第三篇 旋轉平移縮放

總結

以上是生活随笔為你收集整理的QOpenGLWidget 第二篇EBO、VBO、VAO(绘制三棱锥)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 深夜福利视频网站 | 男人天堂免费视频 | 国产网红无码精品视频 | 欧美成人三级在线观看 | 奇米影视第四色888 免费观看a毛片 | xxxx毛片| 亚洲欧美综合网 | 91精品999| 精品乱码一区二区三区四区 | 九九少妇 | 亚洲色偷精品一区二区三区 | 吞精囗交69激情欧美 | 韩国伦理在线视频 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产精品久久久一区 | 成人片免费视频 | 成人69视频 | 日韩av自拍偷拍 | 日韩系列在线 | 337p粉嫩大胆色噜噜噜 | 狠狠干青青草 | 国产一区二区三区精品视频 | 国产一区二区三区在线观看免费 | 欧美成人一区二区三区四区 | 老外毛片 | 亚洲人xxx | 成人av不卡 | 精品九九九 | 国内视频一区二区 | 精品人妻一区二区三区三区四区 | 美美女高清毛片视频免费观看 | 日韩亚洲欧美在线 | 免费日韩 | 中国av毛片 | 欧美com | 亚洲国产剧情 | 97国产成人 | 潘金莲一级淫片aaaaa武则天 | 极品新婚夜少妇真紧 | 色牛影院 | 美丽的姑娘观看在线播放 | 加勒比日韩 | 天天干天天插 | 国产又粗又大又爽 | 国产中出视频 | 亚洲欧美在线播放 | 特级西西444www高清大胆 | 国产精品国产三级国产播12软件 | 一区二区伊人 | 日本视频在线播放 | 午夜精品在线播放 | 国语播放老妇呻吟对白 | 国产黄色大全 | 四虎国产成人永久精品免费 | 色播视频在线 | 天堂8中文 | 朝桐光一区二区三区 | 色综合91| 亲切的金子片段 | 精品人妻互换一区二区三区 | 一区二区三区四区日韩 | 欧洲精品一区二区三区久久 | 制服丝袜手机在线 | 国产偷人妻精品一区 | 伊人影院在线观看视频 | 婷婷九月丁香 | 久久免费视频2 | 中文字字幕一区二区三区四区五区 | 久久福利免费视频 | 色就色欧美 | 久久成人国产 | 动漫美女靠逼 | 少妇又紧又深又湿又爽视频 | 99久久久无码国产精品性色戒 | 人妻少妇无码精品视频区 | 国产剧情av引诱维修工 | 男女污网站 | www.4虎| 天天看片天天操 | 亚洲精品五月天 | 成人精品网址 | 日韩综合网站 | 欧美少妇毛茸茸 | 国产高清免费观看 | 最新福利视频 | 天天cao | 成人毛片视频免费看 | 720url在线观看免费版 | 亚洲a在线播放 | www国产精品内射熟女 | 欧美成人资源 | 欧美第三页 | 日本在线播放一区 | 国产精品无码中文 | 欧美大片在线观看 | 99久久婷婷国产精品综合 | 色综合久久久久久久 | 热99视频| 亚洲av永久无码精品一百度影院 |