PlayerGLWidget2.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef PLAYEROPENGLWIDGET2_H
  2. #define PLAYEROPENGLWIDGET2_H
  3. #include <QOpenGLWidget>
  4. #include <QOpenGLFunctions_3_3_Core>
  5. #include <cstdint>
  6. #include <gl/gl.h>
  7. #include <qchar.h>
  8. /**
  9. * @brief
  10. *
  11. */
  12. class PlayerGLWidget2 : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit PlayerGLWidget2(QWidget *parent = nullptr);
  17. ~PlayerGLWidget2();
  18. protected:
  19. void initializeGL() override;
  20. void resizeGL(int w, int h) override;
  21. void paintGL() override;
  22. private:
  23. /* 打开GLSL文件,读取着色器代码 */
  24. bool loadShader(const QString &fileName, char** shaderCode);
  25. /* 加载图片 */
  26. bool loadImage(const QString &fileName, QImage &imageTexture);
  27. private:
  28. GLuint m_VAO1 = 0; // 顶点数组对象的ID
  29. GLuint m_VBO1 = 0; // 顶点缓冲对象的ID
  30. GLuint m_textureID; // 纹理对象的ID
  31. GLuint m_EBO1 = 0; // 索引缓冲对象的ID
  32. GLuint m_shaderProgram = 0; // 着色器程序对象的ID
  33. float* m_vertices = nullptr; // 顶点数据
  34. int m_vertexCount = 0; // 顶点数量
  35. int m_vertexSize = 0; // 顶点大小
  36. uint32_t* m_indices = nullptr; // 索引数据(EBO数据)
  37. int m_indexCount = 0; // 索引数量
  38. char* m_vertexShaderCode = nullptr; // 顶点着色器代码
  39. char* m_fragmentShaderCode = nullptr; // 片段着色器代码
  40. QImage m_imageTexture; /* 纹理图片 */
  41. };
  42. #endif /* PLAYEROPENGLWIDGET2_H */