File indexing completed on 2024-05-19 05:31:54

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@gmail.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #pragma once
0010 
0011 #include "kwin_export.h"
0012 
0013 #include <QVector3D>
0014 #include <QVector>
0015 #include <epoxy/gl.h>
0016 #include <functional>
0017 #include <memory>
0018 
0019 namespace KWin
0020 {
0021 
0022 class KWIN_EXPORT GlLookUpTable3D
0023 {
0024 public:
0025     explicit GlLookUpTable3D(GLuint handle, size_t xSize, size_t ySize, size_t zSize);
0026     ~GlLookUpTable3D();
0027 
0028     GLuint handle() const;
0029     size_t xSize() const;
0030     size_t ySize() const;
0031     size_t zSize() const;
0032 
0033     void bind();
0034 
0035     static std::unique_ptr<GlLookUpTable3D> create(const std::function<QVector3D(size_t x, size_t y, size_t z)> &mapping, size_t xSize, size_t ySize, size_t zSize);
0036 
0037 private:
0038     const GLuint m_handle;
0039     const size_t m_xSize;
0040     const size_t m_ySize;
0041     const size_t m_zSize;
0042 };
0043 
0044 }