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 }