当前位置: 首页>>代码示例>>C++>>正文


C++ SpriteFrame::getTexture方法代码示例

本文整理汇总了C++中SpriteFrame::getTexture方法的典型用法代码示例。如果您正苦于以下问题:C++ SpriteFrame::getTexture方法的具体用法?C++ SpriteFrame::getTexture怎么用?C++ SpriteFrame::getTexture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SpriteFrame的用法示例。


在下文中一共展示了SpriteFrame::getTexture方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: prepareForRender

void LightEffect::prepareForRender(Sprite *sprite, Texture2D *normalmap)
{
    auto gl = getGLProgramState();

    gl->setUniformVec2("u_contentSize", sprite->getContentSize());

    Point posRelToSprite = PointApplyAffineTransform(Point(_lightPos.x, _lightPos.y), sprite->getWorldToNodeAffineTransform());
    gl->setUniformVec3("u_lightPos", Vec3(posRelToSprite.x, posRelToSprite.y, _lightPos.z));

    gl->setUniformTexture("u_normals", normalmap);

	int opacity = sprite->getOpacity();
    SpriteFrame *frame = sprite->getSpriteFrame();
    Size untrimmedSize = frame->getOriginalSize();
    Size trimmedSize = frame->getRect().size;
    Vec2 framePos = frame->getRect().origin;
    Size texSize = frame->getTexture()->getContentSize();
    
    // set sprite position in sheet
    gl->setUniformVec2("u_spritePosInSheet", Vec2(framePos.x / texSize.width, framePos.y / texSize.height));
    gl->setUniformVec2("u_spriteSizeRelToSheet", Vec2(untrimmedSize.width / texSize.width, untrimmedSize.height / texSize.height));
    gl->setUniformInt("u_spriteRotated", frame->isRotated());
	gl->setUniformFloat("u_spriteOpacity", (float)opacity / 255.0f);
    
    // set offset of trimmed sprite
    Vec2 bottomLeft = frame->getOffset() + (untrimmedSize - trimmedSize) / 2;
    Vec2 cornerOffset = frame->isRotated() ? Vec2(bottomLeft.y, bottomLeft.x)
                                           : Vec2(bottomLeft.x, untrimmedSize.height - trimmedSize.height - bottomLeft.y);
    gl->setUniformVec2("u_spriteOffset", cornerOffset);

}
开发者ID:pjc024789,项目名称:Driller,代码行数:31,代码来源:LightEffect.cpp

示例2: removeUnusedSpriteFrames

void SpriteFrameCache::removeUnusedSpriteFrames()
{
    bool removed = false;
    std::vector<std::string> toRemoveFrames;
    
    for (auto iter = _spriteFrames.begin(); iter != _spriteFrames.end(); ++iter)
    {
        SpriteFrame* spriteFrame = iter->second;
        if( spriteFrame->getReferenceCount() == 1 )
        {
            toRemoveFrames.push_back(iter->first);
            spriteFrame->getTexture()->removeSpriteFrameCapInset(spriteFrame);
            CCLOG("cocos2d: SpriteFrameCache: removing unused frame: %s", iter->first.c_str());
            removed = true;
        }
    }

    _spriteFrames.erase(toRemoveFrames);

    // FIXME:. Since we don't know the .plist file that originated the frame, we must remove all .plist from the cache
    if( removed )
    {
        _loadedFileNames->clear();
    }
}
开发者ID:RyunosukeOno,项目名称:rayjack,代码行数:25,代码来源:CCSpriteFrameCache.cpp

示例3: prepareForRender

void LightsHolder::prepareForRender(Sprite *_sprite, Texture2D *normalmap)
{
    int idx=0;
    for(auto &ef : _effectsArray) {
     
        if (ef != nullptr)
        {
            Point posRelToSprite = PointApplyAffineTransform(Point(ef->getLightPos().x, ef->getLightPos().y),_sprite->getWorldToNodeAffineTransform());
            _lightPos[idx]=Vec3(posRelToSprite.x, posRelToSprite.y, ef->getLightPos().z);
            brightness[idx]=ef->getBrightness();
    
        }
        idx++;
    }
    
    auto gl = getGLProgramState();

    gl->setUniformVec2("u_contentSize", _sprite->getContentSize());


 

    gl->setUniformVec3v("u_lightPos",_lightsNumber,_lightPos);

    gl->setUniformTexture("u_normals", normalmap);

    SpriteFrame *frame = _sprite->getSpriteFrame();
    Size untrimmedSize = frame->getOriginalSize();
    Size trimmedSize = frame->getRect().size;
    Vec2 framePos = frame->getRect().origin;
    Size texSize = frame->getTexture()->getContentSize();
    
    // set sprite position in sheet
    gl->setUniformVec2("u_spritePosInSheet", Vec2(framePos.x / texSize.width, framePos.y / texSize.height));
    gl->setUniformVec2("u_spriteSizeRelToSheet", Vec2(untrimmedSize.width / texSize.width, untrimmedSize.height / texSize.height));
    
    gl->setUniformFloatv("u_brightness",_lightsNumber, brightness);
    
    gl->setUniformInt("u_spriteRotated", frame->isRotated());
    gl->setUniformInt("u_lightsNumber", _lightsNumber);
    
    // set offset of trimmed sprite
    Vec2 bottomLeft = frame->getOffset() + (untrimmedSize - trimmedSize) / 2;
    Vec2 cornerOffset = frame->isRotated() ? Vec2(bottomLeft.y, bottomLeft.x)
                                           : Vec2(bottomLeft.x, untrimmedSize.height - trimmedSize.height - bottomLeft.y);
    gl->setUniformVec2("u_spriteOffset", cornerOffset);

}
开发者ID:Kotaiba,项目名称:LightingDemoCocos2d-x,代码行数:48,代码来源:LightsHolder.cpp

示例4: removeSpriteFramesFromTexture

void SpriteFrameCache::removeSpriteFramesFromTexture(Texture2D* texture)
{
    std::vector<std::string> keysToRemove;

    for (auto iter = _spriteFrames.cbegin(); iter != _spriteFrames.cend(); ++iter)
    {
        std::string key = iter->first;
        SpriteFrame* frame = _spriteFrames.at(key);
        if (frame && (frame->getTexture() == texture))
        {
            keysToRemove.push_back(key);
        }
    }

    _spriteFrames.erase(keysToRemove);
}
开发者ID:fiskercui,项目名称:test,代码行数:16,代码来源:CCSpriteFrameCache.cpp

示例5: loadSpriteFrames

void SpriteFrameCachePixelFormatTest::loadSpriteFrames(const std::string &file, cocos2d::Texture2D::PixelFormat expectedFormat)
{
    SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file);
    SpriteFrame *spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("grossini.png");
    Texture2D *texture = spriteFrame->getTexture();
    const ssize_t bitsPerKB = 8 * 1024;
    const double memorySize = 1.0 * texture->getBitsPerPixelForFormat() * texture->getContentSizeInPixels().width * texture->getContentSizeInPixels().height / bitsPerKB;
    //FIXME: texture->getPixelFormat() != expectedFormat all the time, such as Texture2D::PixelFormat::PVRTC2A
//    CC_ASSERT(texture->getPixelFormat() == expectedFormat);
    
    const std::string textureInfo = StringUtils::format("%s: %.2f KB\r\n", texture->getStringForFormat(), memorySize);
    infoLabel->setString(infoLabel->getString() + textureInfo);
    
    SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(file);
    Director::getInstance()->getTextureCache()->removeTexture(texture);
}
开发者ID:anilgulgor,项目名称:myGame,代码行数:16,代码来源:SpriteFrameCacheTest.cpp

示例6: memset

Texture2D * ParticleSystemQuadLoader::parsePropTypeTexture(Node * pNode, Node * pParent, CCBReader * ccbReader) {
        
    std::string spriteFile = ccbReader->readCachedString();
    memset(&_textureRect, 0, sizeof(_textureRect));
        
    if (spriteFile.length() > 0)
    {
        Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(ccbReader->getCCBRootPath() + spriteFile.c_str());
        if (texture == NULL) {
                
            SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFile);
            texture = spriteFrame->getTexture();
            _textureRect.origin = spriteFrame->getOffsetInPixels();
            _textureRect.size = spriteFrame->getOriginalSizeInPixels();
        }
            
        return  texture;
    }
    else
    {
        return NULL;
    }
}
开发者ID:BodbDearg,项目名称:spritebuilder_cocos2dx,代码行数:23,代码来源:CCParticleSystemQuadLoader.cpp

示例7: memset

Node * MapObj::use(Vec2 index,MapInfo * info){
    if (_is_using) {
        return NULL;
    }
    _is_using = true;
    _index = index;
    
    int _tmp_x = _index.x;
    int _tmp_y = info->getTileCountY() - 1 - _index.y;
    
    int _tmp_x_d = _tmp_x / info->getTilePerArea();
    int _tmp_y_d = _tmp_y / info->getTilePerArea();
    
    int area = _tmp_x_d + _tmp_y_d * info->getTileAreaCount() +1 ; // 地域
    
    _tmp_x = _tmp_x - _tmp_x_d * info->getTilePerArea();
    _tmp_y = _tmp_y - _tmp_y_d * info->getTilePerArea();
    
    _tmp_x_d = _tmp_x / info->getTilePerFeild();
    _tmp_y_d = _tmp_y / info->getTilePerFeild();
    
    int feild = _tmp_x_d + _tmp_y_d * info->getTileFeildCount() + 1; // 场景
    
    _tmp_x = _tmp_x - _tmp_x_d * info->getTilePerFeild();
    _tmp_y = _tmp_y - _tmp_y_d * info->getTilePerFeild();
    
    int map_index = _tmp_x + _tmp_y * info->getTileIndexCount() + 1; // 索引
    
    // 生成大图索引
    memset(_filename, 0, FILE_NAME_SIZE);
    sprintf(_filename, "map_%d_%d.plist",area,feild);
    _batchnode_name = _filename;
    // 生成小图文件名
    memset(_filename, 0, FILE_NAME_SIZE);
    sprintf(_filename, "map_%02d_%02d_%02d.png",area,feild,map_index);
    SpriteFrame *frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(_filename);
    if (!frame) {
        cout << "area : " <<area << " : " << feild << " : " << map_index << endl;
    }
    // 如果已经创建的sp则直接设置frame 否则创建一个新的sp
    if(_sp){
        std::string f = _filename;
        
        if (frame->getTexture()->getName() != _sp->getTexture()->getName()) {
            // 如果不是同一个大图的,那就这能重新创建了 
            _sp->removeFromParentAndCleanup(true);
            _sp = Sprite::createWithSpriteFrame(frame);
            _sp->setAnchorPoint(Vec2::ZERO);
        }
        else{
            _sp->setSpriteFrame(frame);
        }
    }
    else{
        _sp = Sprite::createWithSpriteFrame(frame);
        _sp->setAnchorPoint(Vec2::ZERO);
    }
    
    _sp->setPosition(Vec2(index.x * info->getTileWidth(), index.y * info->getTileHeight()));
    return _sp;
}
开发者ID:cmdwin32,项目名称:tileMapHomework,代码行数:61,代码来源:MapObjects.cpp


注:本文中的SpriteFrame::getTexture方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。