CSEngine
Loading...
Searching...
No Matches
VolumeTextureGenerator.h
1#pragma once
2#include <functional>
3#include "../../Matrix.h"
4
5namespace CSE {
6
7 struct GLMeshID;
8
9 class GLProgramHandle;
10
11 class SMaterial;
12
14 public:
16
18
19 void GenerateVolumeTexture(unsigned int level, const GLMeshID& mesh, const SMaterial& material);
20
21 private:
22 static int GetIndex(int level, int x, int y, int z);
23
24 static void Render(int level, const GLMeshID& mesh, GLProgramHandle* handle);
25
26 static unsigned char* CaptureBuffer();
27
28 static int SavePng(const char* filename, int width, int height, int chennel, void* data);
29
30 void ProcessAxisRender(unsigned int level, const GLMeshID& mesh, GLProgramHandle* handle,
31 unsigned char* data, const CSE::mat4& view,
32 const std::function<int(int, int, int, int)>& indexCalculator);
33
34 void SetupFramebuffer(unsigned int& captureFBO, unsigned int& captureRBO,
35 unsigned int& tex, unsigned int tex2d_size);
36
37 private:
38 GLProgramHandle* m_handle = nullptr;
39 };
40}