PlayerGLWidget2.h 1.7 KB

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