您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 模型用上shader的方法。仅备份

2016-11-10 15:09 190 查看
auto floor = PhysicsSprite3D::create("Sprite3DTest/box.c3t", &rbDes);
//floor->setTexture("Sprite3DTest/plane.png");
auto glprogram = GLProgram::createWithFilenames("Sprite3DTest/test.vs.txt", "Sprite3DTest/test.fs.txt");
auto glprogramstate = GLProgramState::create(glprogram);
//floor->setGLProgramState(glprogramstate);
Texture2D* mix_tex = Director::getInstance()->getTextureCache()->addImage("Sprite3DTest/mix.png");
glprogramstate->setUniformTexture("mix", mix_tex);

Texture2D* tex1 = Director::getInstance()->getTextureCache()->addImage("Sprite3DTest/GrassGround.png");
glprogramstate->setUniformTexture("tex1", tex1);

Texture2D* tex2 = Director::getInstance()->getTextureCache()->addImage("Sprite3DTest/Ground02.png");
glprogramstate->setUniformTexture("tex2", tex2);

auto material = Material::createWithGLStateProgram(glprogramstate);
floor->setMaterial(material);


、、、、fs

varying vec2 TextureCoordOut;

uniform sampler2D mix;

uniform sampler2D tex1;

uniform sampler2D tex2;

void main()

{
vec4 clr_tex1=texture2D(tex1, TextureCoordOut);
vec4 clr_tex2=texture2D(tex2, TextureCoordOut);

vec4 clr_mix=texture2D(mix, TextureCoordOut);
gl_FragColor =clr_tex1*clr_mix.r + clr_tex2*clr_mix.g;
}

、、、、、vs

attribute vec4 a_position;

attribute vec2 a_texCoord;

varying vec2 TextureCoordOut;

void main(void)

{

    gl_Position = CC_MVPMatrix * a_position;

    TextureCoordOut = a_texCoord;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: