mirror of
https://github.com/love2d/love.git
synced 2026-08-19 04:06:17 +02:00
Add love.graphics.getPixelEffect() (issue #372) -- thanks, slime73!
This commit is contained in:
@@ -44,6 +44,8 @@ namespace graphics
|
|||||||
{
|
{
|
||||||
namespace opengl
|
namespace opengl
|
||||||
{
|
{
|
||||||
|
PixelEffect * PixelEffect::current = NULL;
|
||||||
|
|
||||||
std::map<std::string, GLint> PixelEffect::_texture_unit_pool;
|
std::map<std::string, GLint> PixelEffect::_texture_unit_pool;
|
||||||
GLint PixelEffect::_current_texture_unit = 0;
|
GLint PixelEffect::_current_texture_unit = 0;
|
||||||
GLint PixelEffect::_max_texture_units = 0;
|
GLint PixelEffect::_max_texture_units = 0;
|
||||||
@@ -180,11 +182,13 @@ namespace opengl
|
|||||||
void PixelEffect::attach()
|
void PixelEffect::attach()
|
||||||
{
|
{
|
||||||
glUseProgram(_program);
|
glUseProgram(_program);
|
||||||
|
current = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PixelEffect::detach()
|
void PixelEffect::detach()
|
||||||
{
|
{
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
|
current = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PixelEffect::sendFloat(const std::string& name, int size, const GLfloat* vec, int count)
|
void PixelEffect::sendFloat(const std::string& name, int size, const GLfloat* vec, int count)
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ namespace opengl
|
|||||||
static void detach();
|
static void detach();
|
||||||
static std::string getGLSLVersion();
|
static std::string getGLSLVersion();
|
||||||
static bool isSupported();
|
static bool isSupported();
|
||||||
|
|
||||||
|
static PixelEffect * current;
|
||||||
|
|
||||||
void sendFloat(const std::string& name, int size, const GLfloat* vec, int count);
|
void sendFloat(const std::string& name, int size, const GLfloat* vec, int count);
|
||||||
void sendMatrix(const std::string& name, int size, const GLfloat* m, int count);
|
void sendMatrix(const std::string& name, int size, const GLfloat* m, int count);
|
||||||
|
|||||||
@@ -754,6 +754,20 @@ namespace opengl
|
|||||||
effect->attach();
|
effect->attach();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int w_getPixelEffect(lua_State * L)
|
||||||
|
{
|
||||||
|
PixelEffect * effect = PixelEffect::current;
|
||||||
|
if (effect)
|
||||||
|
{
|
||||||
|
effect->retain();
|
||||||
|
luax_newtype(L, "PixelEffect", GRAPHICS_PIXELEFFECT_T, (void*) effect);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
lua_pushnil(L);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int w_isSupported(lua_State * L)
|
int w_isSupported(lua_State * L)
|
||||||
{
|
{
|
||||||
@@ -1214,6 +1228,7 @@ namespace opengl
|
|||||||
{ "getCanvas", w_getCanvas },
|
{ "getCanvas", w_getCanvas },
|
||||||
|
|
||||||
{ "setPixelEffect", w_setPixelEffect },
|
{ "setPixelEffect", w_setPixelEffect },
|
||||||
|
{ "getPixelEffect", w_getPixelEffect },
|
||||||
|
|
||||||
{ "isSupported", w_isSupported },
|
{ "isSupported", w_isSupported },
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user