最近小弟在研究cocos shader方面的知識 剛入門 碰到問題自己又無法解決 斗膽請教各位大佬
我原本自己寫了一個shader程式 無法運行看不到紋理 后來我又把網上某位大佬的例子 抄了過來 還是無法看到紋理 心中甚是疑惑特來請教:
下面這是大佬的例子 也沒有報錯就是紋理顯示不出來
創建精靈:
auto sprite = Sprite::create("HelloWorld.png");
if (sprite == nullptr)
{
problemLoading("'HelloWorld.png'");
}
else
{
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite);
shaderNode(sprite);
}
這是方法
void HelloWorld::shaderNode(Node* node)
{
GLProgram* program = GLProgramCache::getInstance()->getGLProgram("testShader");
if (program == nullptr)
{
program = GLProgram::createWithFilenames("test.vert", "test.frag");
GLProgramCache::getInstance()->addGLProgram(program, "testShader");
}
GLProgramState* programState = GLProgramState::getOrCreateWithGLProgram(program);
programState->setUniformVec4("u_grayParam", Vec4(0.2f, 0.3f, 0.5f, 1.0f));
node->setGLProgramState(programState);
}
頂點著色器
attribute vec4 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
void main()
{
gl_Position = CC_PMatrix * a_position;
v_texCoord = a_texCoord;
}
片元著色器
varying vec2 v_texCoord;
uniform vec4 u_grayParam;
void main()
{
vec4 texColor = texture2D(CC_Texture0, v_texCoord);
texColor.rgb = texColor.r * u_grayParam.r + texColor.g * u_grayParam.g + texColor.b * u_grayParam.b;
gl_FragColor = texColor;
}


uj5u.com熱心網友回復:

解決了 解決了 原來查到底層link的時候失敗了 原因是資源沒找到 尷尬 代碼沒問題 可以正常運行
uj5u.com熱心網友回復:
大家有沒有qq群 活躍點的大神什么的多多益善 我一個人 閉門造車 太難了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/25705.html
標籤:Cocos2d-x
