- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试基于另一个 Sprite
创建一个黑白 Sprite
。由于在创建和缓存 Sprite 像素数据后我无法访问它,因此我通过基于 Image
创建一个新的 Image
来解决它,然后更改图像数据,然后将 Image
变成 Texture
然后最后再次变成 Sprite
,现在是黑白的。
问题是,当我使用从 RenderTexture
生成的 Image
时,它实际上并没有绘制它,但是当我使用 生成的 png 图像时>RenderTexture::saveToFile
之后,它工作正常。
似乎我应该能够在 scene
上看到 output_sprite
就好了,因为它的构建方式几乎相同,唯一的区别是 Image
是从磁盘上的现有文件构建的,而不是直接从 RenderTexture
构建的。
cocos2d::Sprite* anvil_sprite = cocos2d::Sprite::createWithSpriteFrameName("anvil.png");
anvil_sprite->setAnchorPoint(Vec2::ZERO);
anvil_sprite->setPosition(0,0);
RenderTexture* rt = RenderTexture::create(anvil_sprite->getContentSize().width, anvil_sprite->getContentSize().height);
rt->begin();
anvil_sprite->visit();
rt->end();
//generates a file so I can confirm it's generating correctly in the OS's
//image viewer
rt->saveToFile("test_FILE.png");
Image* output_image = new Image;
// Either use the png generated from a previous run's RenderTexture (which works)
// or use a new Image generated on this run.
// If I use the existing png, this works as intended, but I'd like to be
// able to use the texture I generate right away instead of needing to save
// it to disk first
/* OPTION A */
output_image->initWithImageFile("test_FILE.png"); // works
/* OPTION B */
output_image = rt->newImage(); //doesn't render anything
auto output_texture = new Texture2D;
output_texture->initWithImage(output_image);
Sprite* output_sprite = cocos2d::Sprite::createWithTexture(output_texture);
scene->addChild(output_sprite);
除了在 Sprite
中使用纹理之前 GPU 没有机会渲染纹理之外,我不太确定会发生什么。我正在寻找选项 A 和 B 都以相同的方式呈现,但现在只有将预先存在的文件作为 Image
源的那个正在工作。
最佳答案
试试这个:
auto anvil_sprite = cocos2d::Sprite::create("player.png");
anvil_sprite->setAnchorPoint(Vec2::ZERO);
auto rt = RenderTexture::create(anvil_sprite->getTexture()->getPixelsWide(), anvil_sprite->getTexture()->getPixelsHigh());
rt->begin();
//Draw
anvil_sprite->visit();
rt->end();
cocos2d::Director::getInstance()->getRenderer()->render();
auto img = rt->newImage(); //Generate Image
auto texture = new cocos2d::Texture2D();
texture->initWithImage(img); //Texture sprite
auto sp = cocos2d::Sprite::createWithTexture(texture); //New Sprite
sp->setPosition(cocos2d::Director::getInstance()->getWinSize().width, cocos2d::Director::getInstance()->getWinSize().height);
this->addChild(sp);
可以使用“getData”访问同一个 sprite 的像素,并根据需要使用循环或 memset 编辑此 vector ...
auto anvil_sprite = cocos2d::Sprite::create("player.png");
anvil_sprite->setAnchorPoint(Vec2::ZERO);
auto rt = RenderTexture::create(anvil_sprite->getTexture()->getPixelsWide(), anvil_sprite->getTexture()->getPixelsHigh());
rt->begin();
anvil_sprite->visit();
rt->end();
cocos2d::Director::getInstance()->getRenderer()->render();
auto img = rt->newImage(); //Generate Image
auto data = img->getData();
for (size_t i = 0; i < img->getDataLen(); i++)
{
data[i] = 400;
}
//memset(data, 400, img->getDataLen());
我不太了解像素“颜色”,但您可以在 colors 中对自己进行更多记录。如果你想要;0
关于c++ - RenderTexture 创建的图像不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40990646/
我对这里出了什么问题感到困惑,但我确信问题出在我的渲染纹理/视频播放器上——我可能有 20 个 iPhone 游戏对象,我需要制作后播放的动画 .mov 文件屏幕。 为此,我按照教程将视频播放器与渲染
我正在尝试基于另一个 Sprite 创建一个黑白 Sprite。由于在创建和缓存 Sprite 像素数据后我无法访问它,因此我通过基于 Image 创建一个新的 Image 来解决它,然后更改图像数据
我构建了一个简单的 PIXI.js 应用程序来实现 PIXI.RenderTexture,但它不起作用。 它应该渲染两个方形 Sprite ,黑色和白色。黑色的添加了常规的stage.addChild
我正在尝试复制 sf::RenderTexture(上面有 sf::Image 和 sf::Text),到Opencv 垫对象。我们可以通过以下方式将 sf::Image 转换为 cv::Mat (O
我目前正在尝试在 SFML 中重新创建国际象棋。生成板通常按预期工作,但是当我调整窗口大小时,我得到奇怪的白色边框。 调整大小之前: 调整大小后: 看起来 View 与窗口没有正确对齐,所以我认为我的
我们在 Unity3D 上开发一个应用程序,它将从屏幕上获取图像并将其传输到 Texture2D。我们在普通(弱)设备上的性能有困难。 代码如下。我们截屏,然后读取像素 (ReadPixels) -
我有一个从相机渲染的纹理。我想从此纹理中获取一些单个像素值并制作新纹理(1×1 像素),然后我想将其应用于某些对象。 有没有一种方法可以定义一个纹理,其 colorBuffer 只是来自另一个 col
我需要将 RenderTexture 对象保存到 .png 文件,然后将其用作纹理来包裹 3D 对象。我的问题是现在我无法使用 EncodeToPNG() 保存 RenderTexture 对象,因为
问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容,我一直在使用 Graphics.Blit 使用自己的 Material 绘制它。 Graphics.Blit (nu
我有两个食人魔应用程序: 1) 子应用程序,渲染到窗口和纹理(使用相同的相机)。纹理被“导出”到共享内存(linux 中的 shm) 2) 主应用程序,其中一个平面显示 (1)“子应用程序”中发生的事
我编写了一个 EditorWindow,它将摄像机的 View 渲染到另一个编辑器窗口中。为了在窗口大小调整时立即适应,在tick时间重新分配相机的目标纹理(实际上只在必要时才这样做)以演示问题: p
我使用的是 Visual Studio 2017。调试时它指向第 11 行 texture.getTexture().copyToImage().saveToFile("C:/test.bmp");
如果 ClippingNode 被渲染到 RenderTexture 而不是作为子节点添加(或者在我的例子中添加到一个本身被渲染到 RenderTexture 的容器),效果就会被破坏: Sprite
我有一个问题。 我正在尝试制作一个场景的屏幕截图,然后制作一个 Sprite 并将这个 Sprite 传递给其他场景。我这样做: RenderTexture* texture = RenderText
快速说明 - 如果您的 Unity/Android 代码将在 Unity 端以 30+ FPS 播放h264 视频流,而不是完整视频,并且可以分享它,那会救我! 描述:我有 Unity Pro 4.3
我是一名优秀的程序员,十分优秀!