本文整理汇总了C++中CCGLProgram::initWithVertexShaderByteArray方法的典型用法代码示例。如果您正苦于以下问题:C++ CCGLProgram::initWithVertexShaderByteArray方法的具体用法?C++ CCGLProgram::initWithVertexShaderByteArray怎么用?C++ CCGLProgram::initWithVertexShaderByteArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCGLProgram
的用法示例。
在下文中一共展示了CCGLProgram::initWithVertexShaderByteArray方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initProgram
void SpriteMask::initProgram()
{
std::string sharderStr = CCFileUtils::getInstance()->fullPathForFilename("Shaders/shader_mask.fsh");
GLchar * fragSource = (GLchar*)CCString::createWithContentsOfFile(sharderStr.c_str())->getCString();
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, fragSource);
setShaderProgram(pProgram);
pProgram->release();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
_maskLocation = glGetUniformLocation(getShaderProgram()->getProgram(), "u_mask");
_offsetLocation = glGetUniformLocation(getShaderProgram()->getProgram(), "v_offset");
CHECK_GL_ERROR_DEBUG();
}
示例2:
static int tolua_CCGLProgram_CCGLProgram_initWithVertexShaderByteArray00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
tolua_Error tolua_err;
if (
!tolua_isusertype(tolua_S,1,"CCGLProgram",0,&tolua_err) ||
!tolua_isstring(tolua_S,2,0,&tolua_err) ||
!tolua_isstring(tolua_S,3,0,&tolua_err) ||
!tolua_isnoobj(tolua_S,4,&tolua_err)
)
goto tolua_lerror;
else
#endif
{
CCGLProgram* self = (CCGLProgram*) tolua_tousertype(tolua_S,1,0);
const char* vShaderByteArray = ((const char*) tolua_tostring(tolua_S,2,0));
const char* fShaderByteArray = ((const char*) tolua_tostring(tolua_S,3,0));
#ifndef TOLUA_RELEASE
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'initWithVertexShaderByteArray'", NULL);
#endif
{
bool tolua_ret = (bool) self->initWithVertexShaderByteArray(vShaderByteArray,fShaderByteArray);
tolua_pushboolean(tolua_S,(bool)tolua_ret);
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'initWithVertexShaderByteArray'.",&tolua_err);
return 0;
#endif
}
示例3: init
bool ShaderRetroEffect::init()
{
if( ShaderTestDemo::init() ) {
GLchar * fragSource = (GLchar*) CCString::createWithContentsOfFile(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("Shaders/example_HorizontalColor.fsh"))->getCString();
CCGLProgram *p = new CCGLProgram();
p->initWithVertexShaderByteArray(ccPositionTexture_vert, fragSource);
p->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
p->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
p->link();
p->updateUniforms();
CCDirector *director = CCDirector::sharedDirector();
CCSize s = director->getWinSize();
m_pLabel = CCLabelBMFont::create("RETRO EFFECT", "fonts/west_england-64.fnt");
m_pLabel->setShaderProgram(p);
p->release();
m_pLabel->setPosition(ccp(s.width/2,s.height/2));
addChild(m_pLabel);
scheduleUpdate();
return true;
}
return false;
}
示例4: initWithTexture
bool BloodFlashSprite::initWithTexture(CCTexture2D *pTexture, const CCRect& rect)
{
if (CCSprite::initWithTexture(pTexture, rect))
{
CCGLProgram *program = new CCGLProgram;
GLchar *fragSrc = (GLchar *)CCString::createWithContentsOfFile(
CCFileUtils::sharedFileUtils()->fullPathForFilename(_fragShaderName.c_str()).c_str())->getCString();
program->initWithVertexShaderByteArray(ccPositionTextureColor_vert, fragSrc);
setShaderProgram(program);
program->release();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
return true;
}
return false;
}
示例5: shaderMulColor
void CSpriteRGBA::shaderMulColor(float r, float g, float b, float a)
{
CCGLProgram *pShaders = new CCGLProgram;
pShaders->initWithVertexShaderByteArray(ccPositionTextureColor_vert, SPRITERGBA_SHADER_MUL_COLOR_FSH);
CHECK_GL_ERROR_DEBUG();
pShaders->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
pShaders->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
pShaders->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
pShaders->link();
CHECK_GL_ERROR_DEBUG();
pShaders->updateUniforms();
CHECK_GL_ERROR_DEBUG();
GLint nDotColorLocation = pShaders->getUniformLocationForName("v_dotcolor");
pShaders->setUniformLocationWith4f(nDotColorLocation, r, g, b, a);
scale9Image->setShaderProgram(pShaders);
CHECK_GL_ERROR_DEBUG();
pShaders->release();
}
示例6: loadShader
void ShaderManager::loadShader(const char* key, const GLchar* vertexShader, const GLchar* fragShader)
{
CCGLProgram * ccProgram = CCShaderCache::sharedShaderCache()->programForKey(key);
if (ccProgram == NULL)
{
ccProgram = new CCGLProgram();
ccProgram->autorelease();
CCShaderCache::sharedShaderCache()->addProgram(ccProgram, key);
}
else
{
ccProgram->reset();
}
ccProgram->initWithVertexShaderByteArray(vertexShader, fragShader);
CHECK_GL_ERROR_DEBUG();
ccProgram->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
ccProgram->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
ccProgram->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
// 自定义着色器链接
ccProgram->link();
CHECK_GL_ERROR_DEBUG();
// 设置移动、缩放、旋转矩阵
ccProgram->updateUniforms();
CHECK_GL_ERROR_DEBUG();
}
示例7: enableGray
void EXGrayUtility::enableGray(CCSprite* sp)
{
const GLchar* pszFragSource =
"#ifdef GL_ES \n \
precision mediump float; \n \
#endif \n \
uniform sampler2D u_texture; \n \
varying vec2 v_texCoord; \n \
varying vec4 v_fragmentColor; \n \
void main(void) \n \
{ \n \
// Convert to greyscale using NTSC weightings \n \
vec4 col = texture2D(u_texture, v_texCoord); \n \
float grey = dot(col.rgb, vec3(0.299, 0.587, 0.114)); \n \
gl_FragColor = vec4(grey, grey, grey, col.a); \n \
}";
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, pszFragSource);
sp->setShaderProgram(pProgram);
pProgram->release();
sp->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
sp->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
sp->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
sp->getShaderProgram()->link();
sp->getShaderProgram()->updateUniforms();
}
示例8: initShader
//--------------------------------------------------------
void CShaderNode::initShader( const char *vert, const char *frag)
{
CCGLProgram* shader = new CCGLProgram();
shader->initWithVertexShaderByteArray(vert, frag); //载入着色器程序
//使用着色器程序
this->setShaderProgram(shader);
shader->release();
CHECK_GL_ERROR_DEBUG();
//绑定attribute变量
this->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
this->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
this->getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
//获取attribute变量标识
m_unAttributeColor = glGetAttribLocation(this->getShaderProgram()->getProgram(), kCCAttributeNameColor);
m_unAttributePosition = glGetAttribLocation(this->getShaderProgram()->getProgram(), kCCAttributeNamePosition);
this->getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
//获取uniform变量标识
m_unUniformResolution = glGetUniformLocation(this->getShaderProgram()->getProgram(), "resolution");
m_unUniformTime = glGetUniformLocation(this->getShaderProgram()->getProgram(), "time");
m_unUniformTex0 = glGetUniformLocation(this->getShaderProgram()->getProgram(), "tex0");
}
示例9: initProgram
void SpriteBlur::initProgram()
{
GLchar * fragSource = (GLchar*) CCString::createWithContentsOfFile(
CCFileUtils::sharedFileUtils()->fullPathForFilename("Shaders/example_Blur.fsh").c_str())->getCString();
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, fragSource);
setShaderProgram(pProgram);
pProgram->release();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
subLocation = glGetUniformLocation( getShaderProgram()->getProgram(), "substract");
blurLocation = glGetUniformLocation( getShaderProgram()->getProgram(), "blurSize");
CHECK_GL_ERROR_DEBUG();
}
示例10: setShader
void Ship::setShader(int what){
do{
GLchar* pszFragSource;
if(what == 0){
pszFragSource =
"#ifdef GL_ES \n "
"precision mediump float; \n "
"#endif \n "
"uniform sampler2D u_texture; \n "
"varying vec2 v_texCoord; \n "
"varying vec4 v_fragmentColor; \n "
"void main(void) \n "
"{ \n "
"// Convert to greyscale using NTSC weightings \n "
"vec4 col = texture2D(u_texture, v_texCoord); \n "
"gl_FragColor = vec4(col.r, col.g, col.b, col.a); \n "
"}";
}else{
pszFragSource =
"#ifdef GL_ES \n "
"precision mediump float; \n "
"#endif \n "
"uniform sampler2D u_texture; \n "
"varying vec2 v_texCoord; \n "
"varying vec4 v_fragmentColor; \n "
"void main(void) \n "
"{ \n "
"// Convert to greyscale using NTSC weightings \n "
"float grey = dot(texture2D(u_texture, v_texCoord).rgba, vec4(0.5, 0.0, 0.0,0.7)); \n "
"gl_FragColor = vec4(grey, 0.0, 0.0, 0.0); \n "
"}";
}
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, pszFragSource);
this->setShaderProgram(pProgram);
pProgram->release();
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
this->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
this->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
} while (0);
}
示例11: LoadSuperAnimShader
void LoadSuperAnimShader(){
CCGLProgram* aProgram = new CCGLProgram();
aProgram->initWithVertexShaderByteArray(ccSuperAnim_vert, ccPositionTextureColor_frag);
aProgram->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
aProgram->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
aProgram->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
aProgram->link();
aProgram->updateUniforms();
CCShaderCache::sharedShaderCache()->addProgram(aProgram, kCCShaderSuperAnimation);
aProgram->release();
}
示例12: loadShaderVertex
void QRSprite::loadShaderVertex(const char *vert, const char *frag)
{
CCGLProgram *shader = new CCGLProgram();
shader->initWithVertexShaderByteArray(vert, frag);
shader->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
shader->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
shader->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
shader->link();
shader->updateUniforms();
this->setShaderProgram(shader);
shader->release();
}
示例13: init
//-------------------------------------------------------------------------
bool FKCW_RenderEx_SwayNode::init( const char* p_szSpriteFile )
{
do{
m_fTime = 0.0f;
m_pSprite = CCSprite::create( p_szSpriteFile );
if( m_pSprite == NULL )
{
break;
}
this->addChild( m_pSprite );
// 加载顶点着色器和片元着色器
CCGLProgram* pShader = new CCGLProgram();
pShader->initWithVertexShaderByteArray(ccPositionTextureA8Color_vert, szSwayShader );
m_pSprite->setShaderProgram( pShader );
pShader->release();
CHECK_GL_ERROR_DEBUG();
// 启用顶点着色器的attribute变量,坐标、纹理坐标、颜色
m_pSprite->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
m_pSprite->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
// 自定义着色器链接
m_pSprite->getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
// 设置移动、缩放、旋转矩阵
m_pSprite->getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
m_nTimeUniformLocation = glGetUniformLocation( m_pSprite->getShaderProgram()->getProgram(), "u_time" );
m_pSprite->getShaderProgram()->use();
// 开启帧更新
this->schedule(schedule_selector(FKCW_RenderEx_SwayNode::UpdatePos));
return true;
}while(0);
return false;
}
示例14: initWithTexture
bool EXGraySprite::initWithTexture( cocos2d::CCTexture2D* pTexture, const cocos2d::CCRect& tRect )
{
do{
CC_BREAK_IF(!CCSprite::initWithTexture(pTexture, tRect));
GLchar* pszFragSource =
"#ifdef GL_ES \n \
precision mediump float; \n \
#endif \n \
uniform sampler2D u_texture; \n \
varying vec2 v_texCoord; \n \
varying vec4 v_fragmentColor; \n \
void main(void) \n \
{ \n \
// Convert to greyscale using NTSC weightings \n \
vec4 col = texture2D(u_texture, v_texCoord); \n \
float grey = dot(col.rgb, vec3(0.299, 0.587, 0.114)); \n \
gl_FragColor = vec4(grey, grey, grey, col.a); \n \
}";
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, pszFragSource);
this->setShaderProgram(pProgram);
pProgram->release();
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
this->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
this->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
this->getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
return true;
} while (0);
return false;
}
示例15: initWithTexture
bool SpriteBlur::initWithTexture(CCTexture2D* texture, const CCRect& rect)
{
if( CCSprite::initWithTexture(texture, rect) )
{
CCSize s = getTexture()->getContentSizeInPixels();
blur_ = ccp(1/s.width, 1/s.height);
sub_[0] = sub_[1] = sub_[2] = sub_[3] = 0;
GLchar * fragSource = (GLchar*) CCString::createWithContentsOfFile(
CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("Shaders/example_Blur.fsh"))->getCString();
CCGLProgram* pProgram = new CCGLProgram();
pProgram->initWithVertexShaderByteArray(ccPositionTextureColor_vert, fragSource);
setShaderProgram(pProgram);
pProgram->release();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->link();
CHECK_GL_ERROR_DEBUG();
getShaderProgram()->updateUniforms();
CHECK_GL_ERROR_DEBUG();
subLocation = glGetUniformLocation( getShaderProgram()->getProgram(), "substract");
blurLocation = glGetUniformLocation( getShaderProgram()->getProgram(), "blurSize");
CHECK_GL_ERROR_DEBUG();
return true;
}
return false;
}