diff options
Diffstat (limited to 'libs/preview_dds_native/src/ddswidget.h')
| -rw-r--r-- | libs/preview_dds_native/src/ddswidget.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libs/preview_dds_native/src/ddswidget.h b/libs/preview_dds_native/src/ddswidget.h new file mode 100644 index 0000000..968e253 --- /dev/null +++ b/libs/preview_dds_native/src/ddswidget.h @@ -0,0 +1,36 @@ +#ifndef DDSWIDGET_H +#define DDSWIDGET_H + +#include "ddsfile.h" + +#include <QOpenGLBuffer> +#include <QOpenGLFunctions> +#include <QOpenGLShaderProgram> +#include <QOpenGLTexture> +#include <QOpenGLWidget> + +class DDSWidget : public QOpenGLWidget, protected QOpenGLFunctions +{ + Q_OBJECT + +public: + explicit DDSWidget(const DDSFile& dds, QWidget* parent = nullptr); + ~DDSWidget() override; + +protected: + void initializeGL() override; + void resizeGL(int w, int h) override; + void paintGL() override; + +private: + void uploadTexture(); + void setupShaders(); + + const DDSFile& m_dds; + QOpenGLTexture* m_texture = nullptr; + QOpenGLShaderProgram* m_shader = nullptr; + QOpenGLBuffer m_vbo; + float m_aspectRatio = 1.0f; +}; + +#endif // DDSWIDGET_H |
