1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#ifndef __JIN_LUA_GRAPHICS_JSL_H
#define __JIN_LUA_GRAPHICS_JSL_H
#include "libjin/jin.h"
#include "../luaopen_types.h"
#include "Image.h"
#include "Color.h"
#include "Canvas.h"
namespace jin
{
namespace lua
{
namespace graphics
{
class JSLProgram : public Object
{
public:
static JSLProgram* createJSLProgram(const char* program);
inline void use()
{
currentJSLProgram = this;
jslprogram->use();
}
static inline void unuse()
{
currentJSLProgram = nullptr;
jin::graphics::JSLProgram::unuse();
}
void sendFloat(const char* name, float number)
{
jslprogram->sendFloat(name, number);
}
void sendImage(const char* name, const Image* image)
{
jslprogram->sendTexture(name, image->getRawImage());
}
void sendVec2(const char* name, float x, float y)
{
jslprogram->sendVec2(name, x, y);
}
void sendVec3(const char* name, float x, float y, float z)
{
jslprogram->sendVec3(name, x, y, z);
}
void sendVec4(const char* name, float x, float y, float z, float w)
{
jslprogram->sendVec4(name, x, y, z, w);
}
void sendCanvas(const char* name, const Canvas* canvas)
{
jslprogram->sendCanvas(name, canvas->getRawCanvas());
}
void sendColor(const char* name, const lua::graphics::color* col)
{
jslprogram->sendColor(name, col);
}
static inline JSLProgram* getCurrentJSL()
{
return currentJSLProgram;
}
private:
static JSLProgram* currentJSLProgram;
JSLProgram() {}
~JSLProgram()
{
delete jslprogram;
}
jin::graphics::JSLProgram * jslprogram;
};
} // graphics
} // lua
} // jin
#endif // __JIN_LUA_GRAPHICS_JSL_H
|