本文整理汇总了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);
}
示例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();
}
}
示例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);
}
示例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);
}
示例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);
}
示例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;
}
}
示例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;
}