cocos2d-iphone setBlendFunc () - PullRequest
       44

cocos2d-iphone setBlendFunc ()

0 голосов
/ 15 октября 2010

Вот как выглядит мой код

CCSprite *sp = [CCSprite spriteWithFile:@"textureWithOneColorbackground.jpg"];

[self addChild:sp];

// Change the blending factors
[sp setBlendFunc:(ccBlendFunc){GL_ONE, GL_ONE}];
[sp setColor:ccBLACK];

Исходный цвет текстуры: (246,149,32). Теперь результат (0, 0, 0)

Согласно OpenGL,расчет должен быть таким: ((246 * 1 + 0 * 1), (149 * 1 + 0 * 1), (32 * 1 + 0 * 1)), поэтому он должен быть таким же.

Не знаю, почему я здесь не так, может кто-нибудь мне помочь?

С уважением,

Ответы [ 2 ]

1 голос
/ 01 марта 2011
[sp setBlendFunc:(ccBlendFunc){GL_ONE, GL_ONE}];

setBlendFunc устанавливает glBlendFunc . коэффициент смешивания источника и коэффициент смешивания назначения.

[sp setColor:ccBLACK];

setColor не означает, что он предназначен для смешивания целевого цвета. Это означает установить цвет для цвета вершины.

Вы устанавливаете черный (R = 0, G = 0, B = 0, A = 1) для цвета вершин и, если цвет фона черный,

(([цвет текстуры] 246 * [цвет вершины] (0/255) * [GL_ONE] 1 + [цвет фона] 0 * [GL_ONE] 1), (149 * (0/255) * 1 + 0 * 1), (32 * (0/255) * 1 + 0 * 1)) = (0, 0, 0)

Программирование на iPhone 3D - хорошая книга для понимания OpenGL ES на iPhone.

0 голосов
/ 15 октября 2010

По документам:

http://www.cocos2d -iphone.org / апи-исх / 0.99.0 / interface_c_c_sprite.html # af0c786f0f5b4081a4524e78eda9c8734

Свойство функции смешивания принадлежит в CCSpriteSheet, так что вы не можете индивидуально установить функцию смешивания свойство.

Вы, кажется, применяете это к спрайту, а не к листу. Попробуйте нанести смесь на лист.

...