Преглед изворни кода

[cocos2dx] Fixes tint black.

badlogic пре 7 година
родитељ
комит
f033239b54

+ 3 - 1
spine-cocos2dx/example/Classes/AppDelegate.cpp

@@ -59,7 +59,9 @@ bool AppDelegate::applicationDidFinishLaunching () {
 	// initialize director
 	auto director = Director::getInstance();
 	auto glview = director->getOpenGLView();
-	if (!glview) {
+	if (!glview) {
+		GLContextAttrs attrs = { 8, 8, 8, 8, 0, 0 };
+		GLView::setGLContextAttrs(attrs);
 		glview = GLViewImpl::create("Spine Example");
 		director->setOpenGLView(glview);
 	}

+ 20 - 15
spine-cocos2dx/src/spine/SkeletonRenderer.cpp

@@ -389,27 +389,32 @@ namespace spine {
 				continue;
 			}
 			
+			float alpha = nodeColor.a * _skeleton->getColor().a * slot->getColor().a * color.a * 255;
+			// skip rendering if the color of this attachment is 0
+			if (color.a == 0){
+				_clipper->clipEnd(*slot);
+				continue;
+			}
+			float multiplier = _premultipliedAlpha ? alpha : 255;
+			float red = nodeColor.r * _skeleton->getColor().r * slot->getColor().r * multiplier;
+			float green = nodeColor.g * _skeleton->getColor().g * slot->getColor().g * multiplier;
+			float blue = nodeColor.b * _skeleton->getColor().b * slot->getColor().b * multiplier;
+			
+			color.r = red * color.r;
+			color.g = green * color.g;
+			color.b = blue * color.b;
+			color.a = alpha;
+			
 			if (slot->hasDarkColor()) {
-				darkColor.r = slot->getDarkColor().r * 255;
-				darkColor.g = slot->getDarkColor().g * 255;
-				darkColor.b = slot->getDarkColor().b * 255;
+				darkColor.r = red * slot->getDarkColor().r;
+				darkColor.g = green * slot->getDarkColor().g;
+				darkColor.b = blue * slot->getDarkColor().b;
 			} else {
 				darkColor.r = 0;
 				darkColor.g = 0;
 				darkColor.b = 0;
 			}
-			darkColor.a = darkPremultipliedAlpha;
-			
-			color.a *= nodeColor.a * _skeleton->getColor().a * slot->getColor().a * 255;
-			// skip rendering if the color of this attachment is 0
-			if (color.a == 0){
-				_clipper->clipEnd(*slot);
-				continue;
-			}
-			float multiplier = _premultipliedAlpha ? color.a : 255;
-			color.r *= nodeColor.r * _skeleton->getColor().r * slot->getColor().r * multiplier;
-			color.g *= nodeColor.g * _skeleton->getColor().g * slot->getColor().g * multiplier;
-			color.b *= nodeColor.b * _skeleton->getColor().b * slot->getColor().b * multiplier;
+			darkColor.a = _premultipliedAlpha ? 255 : 0;
 			
 			BlendFunc blendFunc;
 			switch (slot->getData().getBlendMode()) {