mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
added support for textures without premultiplied alpha
This commit is contained in:
parent
df792f3d59
commit
0dc21d23c0
@ -63,6 +63,7 @@ internal class PolygonBatch {
|
|||||||
private var _programBits:uint;
|
private var _programBits:uint;
|
||||||
private var _blendMode:String;
|
private var _blendMode:String;
|
||||||
private var _additive:Boolean;
|
private var _additive:Boolean;
|
||||||
|
private var _alpha:Number;
|
||||||
|
|
||||||
private var _verticesCount:int;
|
private var _verticesCount:int;
|
||||||
private var _vertices:Vector.<Number> = new <Number>[];
|
private var _vertices:Vector.<Number> = new <Number>[];
|
||||||
@ -85,18 +86,15 @@ internal class PolygonBatch {
|
|||||||
|
|
||||||
public function begin (support:RenderSupport, alpha:Number, blendMode:String) : void {
|
public function begin (support:RenderSupport, alpha:Number, blendMode:String) : void {
|
||||||
_support = support;
|
_support = support;
|
||||||
_renderAlpha[3] = alpha;
|
_alpha = alpha;
|
||||||
_programBits = 0xffffffff;
|
_programBits = 0xffffffff;
|
||||||
|
|
||||||
support.finishQuadBatch();
|
|
||||||
|
|
||||||
support.blendMode = blendMode;
|
|
||||||
support.applyBlendMode(true);
|
|
||||||
_blendMode = support.blendMode;
|
|
||||||
_additive = false;
|
_additive = false;
|
||||||
|
|
||||||
|
support.finishQuadBatch();
|
||||||
|
support.blendMode = blendMode;
|
||||||
|
_blendMode = support.blendMode;
|
||||||
|
|
||||||
var context:Context3D = Starling.context;
|
var context:Context3D = Starling.context;
|
||||||
context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 0, _renderAlpha, 1);
|
|
||||||
context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, support.mvpMatrix3D, true);
|
context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, support.mvpMatrix3D, true);
|
||||||
|
|
||||||
var verticesBuffer:VertexBuffer3D = _verticesBuffer;
|
var verticesBuffer:VertexBuffer3D = _verticesBuffer;
|
||||||
@ -217,6 +215,13 @@ internal class PolygonBatch {
|
|||||||
_trianglesBuffer.uploadFromVector(_triangles, 0, _trianglesCount);
|
_trianglesBuffer.uploadFromVector(_triangles, 0, _trianglesCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var pma:Boolean = _texture ? _texture.premultipliedAlpha : true;
|
||||||
|
_renderAlpha[0] = _renderAlpha[1] = _renderAlpha[2] = pma ? _alpha : 1.0;
|
||||||
|
_renderAlpha[3] = _alpha;
|
||||||
|
|
||||||
|
_support.applyBlendMode(pma);
|
||||||
|
context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 0, _renderAlpha, 1);
|
||||||
|
|
||||||
setProgram(context);
|
setProgram(context);
|
||||||
context.setTextureAt(0, _texture.base);
|
context.setTextureAt(0, _texture.base);
|
||||||
context.drawTriangles(_trianglesBuffer, 0, _trianglesCount / 3);
|
context.drawTriangles(_trianglesBuffer, 0, _trianglesCount / 3);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user