cocos2d x 精靈新增描邊效果

2021-06-22 19:01:21 字數 2422 閱讀 1228

學習cocos2d-x 以來一直對裡面的shader部分感興趣,今天正好花了點時間來研究一下精靈的描邊效果。

主要參考了子龍山人大神的testcpp裡面例子並結合自己的理解,實現相對比較簡單。主要是根據引擎內部自帶的shader相關**來實現的。

好了廢話不多說看**:

1。首先需要開啟ccshadercache.cpp檔案修改裡面部分**,新增我們描邊的效果。

在2。然後在 void

shadercache::loaddefaultshaders() 函式裡面加入:

p =new

glprogram();

loaddefaultshader(p,kshadertype_spritetextureoutline);

_programs.

insert

(std

::make_pair

(glprogram::shader_name_sprite_texture_outline, p ) );

3。至於glprogram

::shader_name_sprite_texture_outline值的由來,

需要在ccglprogram.h和ccglprogram.cpp檔案裡面分別加入

static 

const 

char* shader_name_sprite_texture_outline;和

const

char*glprogram::shader_name_sprite_texture_outline ="shaderspritetextureoutline"; **

4。接著繼續修改void

shadercache::loaddefaultshader(glprogram *p,int type) 裡面的**加入:

case: 

kshadertype_spritetextureoutline:

p->

initwithbytearrays

(ccpositiontexturecolor_nomvp_vert,ccspritetextureoutline_frag);

p->

bindattriblocation

(glprogram::attribute_name_position,glprogram::

vertex_attrib_position);

p->

bindattriblocation

(glprogram::attribute_name_color,glprogram::

vertex_attrib_color);

p->

bindattriblocation

(glprogram::attribute_name_tex_coord,glprogram::

vertex_attrib_tex_coords);

break;

5。修改完ccshadercache.cpp檔案裡面的**,還要修改ccshaders.h和ccshaders.cpp裡面**,分別加入:

extern 

cc_dll

const

glchar * ccspritetextureoutline_frag; 和

const

glchar * ccspritetextureoutline_frag = #include "ccshader_spritetexture_outline_frag.h"

6。最後在cocos2d-x-3.0 的 cocos/2d 目錄下加入ccshader_spritetexture_outline_frag.h檔案

(注意把此檔案和系統自己提供的相關shader片段著色器檔案放在一起)。

最關鍵的一步來了,就是片段著色器的**:(這部分參考了子龍山人的shader**)

我做了部分修改,**如下:

" \n\

#ifdef gl_es                                \n\

precision lowp float;                       \n\

#endif                                      \n\

\n\varying vec4 v_fragmentcolor;               \n\

varying vec2 v_texcoord;                    \n\

uniform sampler2d cc_texture0;              \n\

\n\void main()                                 \n\

\n\\n\";

注意格式參照引擎自帶相關著色器**。

好了說到這,基本也就說完了,自己趕快去試試看吧。我用的引擎版本是3.0,至於其他版本實現都是一樣的。 測試

cocos2d x建立精靈

建立精靈 方法一 有一張檔案建立 l ocal spritename cc.sprite create test.dog cc.sprite會自動將檔案載入為紋理,並用於初始化精靈 精靈還可以僅顯示的一部分 l ocal spritename cc.sprite create test.png cc...

cocos2d x中的精靈

所有的遊戲都有 sprites 精靈,你可能知道或者不知道它們是什麼。精靈就是遊戲中在場景裡進行移動的物件。你可以操縱它們。精靈可能是遊戲中最主要的角色。我知道你在想什麼 難道每乙個圖形物件都是精靈sprite嗎?當然不是!為什麼?當你操縱乙個精靈的時候,它就是乙個精靈。如果你不對它進行操作,那它就...

Cocos2d x中的精靈

精靈的繼承關係 1.減少檔案讀取次數 2.減少opengl es繪製呼叫並且加速渲染 3.減少記憶體消耗 運用集方式為什麼會減少記憶體碎片?通常使用zwoptex和texturepacker設計和生成紋理圖集檔案,以及紋理圖集座標檔案 plist 組成。使用精靈幀快取 有以下幾種 1.紋理快取 2....