Set canvas render material for sprites
This commit is contained in:
@@ -325,6 +325,13 @@ struct rc_physicsWorld2D_obj
|
||||
int positionIterations = 3; //how strongly to correct position
|
||||
};
|
||||
|
||||
struct rc_spriteCanvasProperties
|
||||
{
|
||||
irr::video::E_BLEND_OPERATION blend_mode; // = irr::video::EBO_ADD;
|
||||
bool bilinear_filter; // = false;
|
||||
irr::video::E_ANTI_ALIASING_MODE anti_alias; // = irr::video::EAAM_OFF;
|
||||
};
|
||||
|
||||
#define RC_CANVAS_TYPE_2D 0
|
||||
#define RC_CANVAS_TYPE_3D 1
|
||||
#define RC_CANVAS_TYPE_SPRITE 2
|
||||
@@ -363,6 +370,7 @@ struct rc_canvas_obj
|
||||
|
||||
rc_physicsWorld2D_obj physics2D;
|
||||
irr::core::array<irr::s32> sprite_id;
|
||||
rc_spriteCanvasProperties spriteCanvasProperties;
|
||||
};
|
||||
|
||||
irr::core::array<rc_canvas_obj> rc_canvas;
|
||||
@@ -809,6 +817,29 @@ void rc_setDriverMaterial()
|
||||
}
|
||||
|
||||
|
||||
void rc_setDriverMaterial_B(irr::video::E_BLEND_OPERATION op, irr::video::E_ANTI_ALIASING_MODE aa, bool bf)
|
||||
{
|
||||
if(!VideoDriver)
|
||||
return;
|
||||
|
||||
irr::video::SMaterial material;
|
||||
material.Lighting = false;
|
||||
material.ZWriteEnable = irr::video::EZW_OFF;
|
||||
material.ZBuffer = false;
|
||||
material.BackfaceCulling = false;
|
||||
material.TextureLayer[0].Texture = 0;
|
||||
material.TextureLayer[0].BilinearFilter = bf;
|
||||
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
|
||||
material.BlendOperation = op;
|
||||
//material.BlendOperation = irr::video::EBO_ADD;
|
||||
material.AntiAliasing = aa;
|
||||
|
||||
material.MaterialType = irr::video::EMT_ONETEXTURE_BLEND;
|
||||
|
||||
VideoDriver->setMaterial(material);
|
||||
}
|
||||
|
||||
|
||||
void draw2DImage(irr::video::IVideoDriver *driver, irr::video::ITexture* texture, irr::core::rect<irr::s32> sourceRect, irr::core::position2d<irr::s32> position, irr::core::position2d<irr::s32> rotationPoint, irr::f32 rotation, irr::core::vector2df scale, bool useAlphaChannel, irr::video::SColor color, irr::core::vector2d<irr::f32> screenSize)
|
||||
{
|
||||
if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
|
||||
|
||||
Reference in New Issue
Block a user