TerraForge3D  2.3.1
3D Terrain And Landscape Generator
ComputeKernel.h
1#pragma once
2
3#define CL_HPP_TARGET_OPENCL_VERSION 200
4#include "CL/opencl.hpp"
5
6#include <string>
7#include <functional>
8#include <unordered_map>
9
11{
12 cl::Buffer buffer;
13 size_t size;
14};
15
17{
18public:
20
22
23 ComputeKernel(std::function<void(std::string)> errFunc, std::function<void(std::string)> statusFunc);
24
25 void AddSoruce(std::string source);
26
27 void BuildProgram(std::string options);
28
29 void AddKernel(std::string name);
30
31 void Clear();
32
33 void ExecuteKernel(std::string name, cl::NDRange local, cl::NDRange global);
34
35 void SetKernelArg(std::string name, int arg, std::string bufferName);
36
37 void ReadBuffer(std::string name, bool blocking, size_t size, void *data);
38
39 void WriteBuffer(std::string name, bool blocking, size_t size, void *data);
40
41 void CreateBuffer(std::string name, int type, size_t size);
42
43 std::function<void(std::string)> onError;
44 std::function<void(std::string)> onStatus;
45 cl::Platform platform;
46 cl::Device device;
47 cl::Context context;
48 cl::Program::Sources sources;
49 cl::Program program;
50 cl::CommandQueue queue;
51
52 std::unordered_map<std::string, OpenCLBuffer> buffers;
53 std::unordered_map<std::string, cl::Kernel> kernels;
54
55
56};