mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
Sprite.smooth
This commit is contained in:
parent
8da6b3d7d6
commit
be151cbfcc
5 changed files with 42 additions and 0 deletions
|
|
@ -78,6 +78,26 @@ DEF_PROP_B(Sprite, MirrorY)
|
|||
DEF_PROP_B(Sprite, Obscured)
|
||||
DEF_PROP_B(Sprite, PerspectiveMode)
|
||||
|
||||
|
||||
RB_METHOD(SpriteGetSmooth)
|
||||
{
|
||||
RB_UNUSED_PARAM;
|
||||
Sprite *k = getPrivateData<Sprite>(self);
|
||||
bool value = false;
|
||||
GUARD_EXC( value = k->smooth; )
|
||||
return rb_bool_new(value);
|
||||
}
|
||||
|
||||
RB_METHOD(SpriteSetSmooth)
|
||||
{
|
||||
rb_check_argc(argc, 1);
|
||||
Sprite *k = getPrivateData<Sprite>(self);
|
||||
bool value;
|
||||
rb_bool_arg(*argv, &value);
|
||||
GUARD_EXC( k->smooth = value; )
|
||||
return *argv;
|
||||
}
|
||||
|
||||
RB_METHOD(spriteWidth){
|
||||
RB_UNUSED_PARAM;
|
||||
|
||||
|
|
@ -129,6 +149,7 @@ void spriteBindingInit(){
|
|||
INIT_PROP_BIND( Sprite, Modulate, "modulate" );
|
||||
INIT_PROP_BIND( Sprite, Obscured, "obscured" );
|
||||
INIT_PROP_BIND( Sprite, Shader, "shader" );
|
||||
INIT_PROP_BIND( Sprite, Smooth, "smooth" );
|
||||
INIT_PROP_BIND( Sprite, PerspectiveMode, "pm");
|
||||
INIT_PROP_BIND( Sprite, PerspectiveZ, "pz");
|
||||
INIT_PROP_BIND( Sprite, PerspectiveRotationX, "rx");
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ typedef void (APIENTRYP _PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint
|
|||
typedef void (APIENTRYP _PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
typedef void (APIENTRYP _PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP _PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (APIENTRYP _PFNGLGENERATEMIPMAPPROC) (GLenum texture);
|
||||
|
||||
/* Debugging */
|
||||
typedef void (APIENTRY * _GLDEBUGPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void *userParam);
|
||||
|
|
@ -148,6 +149,7 @@ typedef void (APIENTRYP _PFNGLRELEASESHADERCOMPILERPROC) (void);
|
|||
GL_FUN(TexSubImage2D, _PFNGLTEXSUBIMAGE2DPROC) \
|
||||
GL_FUN(TexParameteri, _PFNGLTEXPARAMETERIPROC) \
|
||||
GL_FUN(ActiveTexture, _PFNGLACTIVETEXTUREPROC) \
|
||||
GL_FUN(GenerateMipmap, _PFNGLGENERATEMIPMAPPROC) \
|
||||
/* Buffer object */ \
|
||||
GL_FUN(GenBuffers, _PFNGLGENBUFFERSPROC) \
|
||||
GL_FUN(DeleteBuffers, _PFNGLDELETEBUFFERSPROC) \
|
||||
|
|
|
|||
|
|
@ -92,6 +92,15 @@ namespace TEX{
|
|||
gl.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mode ? GL_LINEAR : GL_NEAREST);
|
||||
gl.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mode ? GL_LINEAR : GL_NEAREST);
|
||||
}
|
||||
|
||||
static inline void setSmoothMipMaps(bool mode){
|
||||
gl.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mode ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST);
|
||||
gl.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mode ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST);
|
||||
}
|
||||
|
||||
static inline void generateMipMaps(){
|
||||
gl.GenerateMipmap(GL_TEXTURE_2D);
|
||||
}
|
||||
}
|
||||
|
||||
/* Framebuffer Object */
|
||||
|
|
|
|||
|
|
@ -651,12 +651,20 @@ void Sprite::draw(){
|
|||
|
||||
p->bitmap->bindTex(*base);
|
||||
|
||||
if (smooth)
|
||||
{
|
||||
//TEX::generateMipMaps();
|
||||
TEX::setSmooth(true);
|
||||
}
|
||||
|
||||
if (p->wave.active)
|
||||
p->wave.qArray.draw();
|
||||
else
|
||||
p->quad.draw();
|
||||
|
||||
glState.blendMode.pop();
|
||||
if (smooth)
|
||||
TEX::setSmooth(false);
|
||||
}
|
||||
|
||||
void Sprite::onGeometryChange(const Scene::Geometry &geo){
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ public:
|
|||
int getWidth() const;
|
||||
int getHeight() const;
|
||||
|
||||
bool smooth = false;
|
||||
|
||||
void update();
|
||||
|
||||
DECL_ATTR( Bitmap, Bitmap* )
|
||||
|
|
|
|||
Loading…
Reference in a new issue