kinect/codes/Azure-Kinect-Sensor-SDK/tools/k4aviewer/k4apointcloudrenderer.h

67 lines
1.6 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef K4APOINTCLOUDRENDERER_H
#define K4APOINTCLOUDRENDERER_H
// System headers
//
// Library headers
//
#include <k4a/k4a.hpp>
#include "k4aimgui_all.h"
#include "linmath.h"
// Project headers
//
#include "openglhelpers.h"
namespace k4aviewer
{
class PointCloudRenderer
{
public:
PointCloudRenderer();
~PointCloudRenderer() = default;
void UpdateViewProjection(linmath::mat4x4 view, linmath::mat4x4 projection);
GLenum UpdatePointClouds(const k4a::image &color, const OpenGL::Texture &pointCloudTexture);
GLenum Render();
void SetPointSize(int pointSize);
int GetPointSize() const;
void EnableShading(bool enableShading);
bool ShadingIsEnabled() const;
PointCloudRenderer(PointCloudRenderer &) = delete;
PointCloudRenderer(PointCloudRenderer &&) = delete;
PointCloudRenderer &operator=(PointCloudRenderer &) = delete;
PointCloudRenderer &operator=(PointCloudRenderer &&) = delete;
private:
linmath::mat4x4 m_view;
linmath::mat4x4 m_projection;
// Render settings
int m_pointSize = 2;
bool m_enableShading = true;
// Point Array Size
GLsizei m_vertexArraySizeBytes = 0;
// OpenGL resources
OpenGL::Program m_shaderProgram;
GLint m_viewIndex;
GLint m_projectionIndex;
GLint m_enableShadingIndex;
GLint m_pointCloudTextureIndex;
OpenGL::VertexArray m_vertexArrayObject = OpenGL::VertexArray(true);
OpenGL::Buffer m_vertexColorBufferObject = OpenGL::Buffer(true);
};
} // namespace k4aviewer
#endif