使用setBlendFunc可以使CCSprite變成黑白的一種嗎?如果是,請告訴如何去做。如何使用setBlendFunc將CCSprite轉換爲黑白/灰色
更多詳細信息:
我必須讓我的遊戲精靈(背景字符)到灰色salce /黑色和白色的某一時間點。我不想爲此拍攝其他圖像。我試過CCTexture2DMutable。但事情是需要額外的記憶相同的精靈。
有什麼辦法可以使用一個蒙版圖像,並使所有精靈灰度。 請幫忙。
使用setBlendFunc可以使CCSprite變成黑白的一種嗎?如果是,請告訴如何去做。如何使用setBlendFunc將CCSprite轉換爲黑白/灰色
更多詳細信息:
我必須讓我的遊戲精靈(背景字符)到灰色salce /黑色和白色的某一時間點。我不想爲此拍攝其他圖像。我試過CCTexture2DMutable。但事情是需要額外的記憶相同的精靈。
有什麼辦法可以使用一個蒙版圖像,並使所有精靈灰度。 請幫忙。
這不是數學上正確灰度化,但看起來黑色&白:
// setup grayscaling:
GLfloat rgba[4] = { 0.65f, 0.65f, 0.65f, 1.0f };
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, rgba);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
// ... glDrawArrays() here ...
// turn off grayscaling:
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
插入此代碼到CCSprite繪製方法。 0.65f
rgba
的值是通過實驗設定的,試着調整它。
不可能通過setBlendFunc這樣做,但可以使用CCMutableTexture完成。如果這是一個可行的選擇,我會發布所需的代碼來這樣做。
感謝您的回覆。我已經嘗試過CCMutableTexture。我想減少內存使用量。是否有任何使用單個蒙版精靈,並使所有圖像黑白灰度。請原諒我,如果我問什麼愚蠢的。 – rat 2012-01-13 10:38:19
這是我想要的幾乎一個,我試着用default.png(cocos2d imgae),但是在一些地方它顯示了一些不是原來的黑色。 – rat 2012-01-20 13:51:28
黑色是由dot3組合模式的特殊公式引起的:'result.rgb = 4 *(((r0-0.5)*(r1-0.5))+((g0-0.5)*(g1-0.5))+( (b0-0.5)*(b1-0.5)))'。您可以通過設置先前的環境來爲處理顏色添加一些價值,但它會將您的顏色限制爲白色,並且我無法使其工作。 – brigadir 2012-01-20 16:21:47
感謝您的回覆。 – rat 2012-01-21 04:53:19