diff options
author | chai <chaifix@163.com> | 2018-11-13 21:33:25 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-13 21:33:25 +0800 |
commit | d2058dce75ceb67f27c50e9f27d755a4d30c9003 (patch) | |
tree | 7575e4b15b637511705632c276f244159841e375 /src/libjin/Graphics/je_sprite.cpp | |
parent | 75792c15480d3d99b2ba7e79e143e4b569b22611 (diff) |
*修改渲染模块
Diffstat (limited to 'src/libjin/Graphics/je_sprite.cpp')
-rw-r--r-- | src/libjin/Graphics/je_sprite.cpp | 72 |
1 files changed, 62 insertions, 10 deletions
diff --git a/src/libjin/Graphics/je_sprite.cpp b/src/libjin/Graphics/je_sprite.cpp index 4ef32a4..9ee4fc1 100644 --- a/src/libjin/Graphics/je_sprite.cpp +++ b/src/libjin/Graphics/je_sprite.cpp @@ -12,6 +12,12 @@ namespace JinEngine Sprite::Sprite() : mShader(nullptr) , mGraphic(nullptr) + , mScale(1, 1) + , mColor(255, 255, 255, 255) + { + } + + Sprite::~Sprite() { } @@ -22,37 +28,81 @@ namespace JinEngine void Sprite::setOrigin(Origin origin) { - + int l = 0, r = 0, t = 0, b = 0; + if (mGraphic != nullptr) + { + r = mGraphic->getWidth(); + b = mGraphic->getHeight(); + } + switch (origin) + { + case TopLeft: + mOrigin.x = l; + mOrigin.y = t; + break; + case TopCenter: + mOrigin.x = r/2.f; + mOrigin.y = t; + break; + case TopRight: + mOrigin.x = r; + mOrigin.y = t; + break; + case MiddleLeft: + mOrigin.x = l; + mOrigin.y = b/2.f; + break; + case MiddleCenter: + mOrigin.x = r/2.f; + mOrigin.y = b/2.f; + break; + case MiddleRight: + mOrigin.x = r; + mOrigin.y = b/2.f; + break; + case BottomLeft: + mOrigin.x = l; + mOrigin.y = b; + break; + case BottomCenter: + mOrigin.x = r/2.f; + mOrigin.y = b; + break; + case BottomRight: + mOrigin.x = r; + mOrigin.y = b; + break; + } } void Sprite::setOrigin(int x, int y) { - + mOrigin.set(x, y); } void Sprite::setPosition(int x, int y) { - + mPosition.set(x, y); } void Sprite::setScale(float x, float y) { - + mScale.set(x, y); } void Sprite::setColor(Color color) { - + mColor = color; } - void Sprite::setShader(const Shader* shader) + void Sprite::setShader(Shader* shader) { - + mShader = shader; } void Sprite::setGraphic(const Graphic* graphic) { - + mGraphic = graphic; } void Sprite::render() @@ -60,8 +110,10 @@ namespace JinEngine Shader* shader = Shader::getCurrentShader(); Color c = gl.getColor(); gl.setColor(mColor); - mShader->use(); - mGraphic->render(mPosition.x, mPosition.y, mScale.x, mScale.y, mRotation, mOrigin.x, mOrigin.y); + if(mShader != nullptr) + mShader->use(); + if(mGraphic != nullptr) + mGraphic->render(mPosition.x, mPosition.y, mScale.x, mScale.y, mRotation, mOrigin.x, mOrigin.y); shader->use(); gl.setColor(c); } |