123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "PlayerGLWidget.h"
- #include "spdlog/spdlog.h"
- #include <qopenglext.h>
- #include <QVariant>
- #include <QDateTime>
- PlayerGLWidget::PlayerGLWidget(QWidget *parent) : QOpenGLWidget(parent)
- {
- }
- PlayerGLWidget::~PlayerGLWidget()
- {
- }
- void PlayerGLWidget::initializeGL()
- {
- /* 初始化OpenGL函数,OpenGL的函数是在运行时才确定函数指针的 */
- initializeOpenGLFunctions();
- m_shaderObj = new ShaderRect();
- m_VAO1 = m_shaderObj->initShape(); // 初始化形状
- if(m_VAO1 == 0)
- {
- SPDLOG_ERROR("初始化形状失败");
- return;
- }
- /* 初始化着色器 */
- QString vertexShaderFile = ":/shader/vertexShader.glsl";
- QString fragmentShaderFile = ":/shader/fragmentShader.glsl";
- if (!m_shaderObj->loadShaderCode(vertexShaderFile, fragmentShaderFile))
- {
- SPDLOG_ERROR("加载着色器代码失败");
- return;
- }
- /* 编译着色器 */
- m_shaderObj->compileShader();
- /* 创建纹理 */
- QString imageFile1 = QString(":/Image/image/1.jpg");
- QString imageFile2 = QString(":/Image/image/awesomeface.png");
- if (!m_shaderObj->createTexture(imageFile1, "ourTexture1"))
- {
- SPDLOG_ERROR("创建纹理失败");
- return;
- }
- if (!m_shaderObj->createTexture(imageFile2, "ourTexture2"))
- {
- SPDLOG_ERROR("创建纹理失败");
- return;
- }
- }
- void PlayerGLWidget::resizeGL(int w, int h)
- {
- }
- void PlayerGLWidget::paintGL()
- {
- /* glClearColor函数是一个状态设置函数,而glClear函数则是一个状态使用的函数,
- * 它使用了当前的状态来获取应该清除为的颜色。 */
- glClearColor(0.1f, 0.3f, 0.3f, 1.0f);
- glClear(GL_COLOR_BUFFER_BIT);
- m_shaderObj->useShader(); // 使用着色器
- m_shaderObj->drawShape(); // 绘制图形
-
- }
|