首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在渲染循环中使用比例尺效果比缩放前位图快吗?

在渲染循环中使用比例尺效果比缩放前位图快吗?
EN

Stack Overflow用户
提问于 2022-09-07 14:37:17
回答 1查看 55关注 0票数 0

目前,我将以下一种方式绘制图像:

在加载过程中,使用WIC获取原始位图,并将其作为属性存储在对象中,表示图像( property).

  • Then (仍在加载时)),创建与需要图像大小相匹配的呈现目标。

  • 使用缩尺effect.

  • Allocate新位图作为表示图像的对象的属性(从兼容目标到imageScaled.

  • Free兼容目标的ID2D1Bitmap *imageScaled property).

  • Copy )绘制图像到兼容目标。在这里,图像加载结束。

当已经创建的图像对象需要调整大小时,我重复步骤2-6。在结果中,在呈现循环中,我只需绘制imageScaled

目前,我正在考虑删除2-6个步骤,每次都使用呈现循环中每个图像对象传递的imageOriginal绘制缩放效果。

我不知道Direct2d Scale效应到底起了什么作用。如果它每次都做一些类似于步骤2-6的事情,那么,我可能不需要这样做了。

另一方面,在我的呈现循环中,对于超出父视图的对象有基本的跳过算法,因此它们根本不被绘制。在当前的实现中,我可能需要等待可能超出视图的预缩放对象的时间,并且它们目前不会被绘制。通过在渲染循环中实现Scale效应,该问题将得到解决。

有人知道哪种解决方案最快吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-12 16:50:06

在重写代码之后,目前看来,在呈现循环中使用Scale对于单个图像来说更快。

在此之前,当调用表示UI的对象的setImage方法时,会发生类似的情况:

代码语言:javascript
复制
void ImageObject::setImage(const wchar_t *path)
{
     if(!wcscmp(this->path, path))
          return;
     SafeRelease(&this->originalImage);
     
     // Load original image via WIC

     this->scaledImage = RescaleImage(this->originalImage, this->width, this->height);
}

在主渲染循环中:

代码语言:javascript
复制
void ImageObject::Render() 
// render loop iterates through ImageObject objects array and calls each object's Render method
{
// skip is cached variable simply equals 
// (this->x > this->parent->width || this->y > this->parent->height || etc)
     if(skip) 
         return;

     renderTarget->DrawBitmap(this->originalImage, rectangle);
}

现在是这样的:

代码语言:javascript
复制
void ImageObject::setImage(const wchar_t *path)
{
     if(!wcscmp(this->path, path))
          return;
     SafeRelease(&this->originalImage);
     
     // Obtain originalImage and that's it
}

void ImageObject::Render() 
{
     if(skip) 
         return;

     globalScale->SetInput(0, this->originalImage);
     globalScale->SetValue(D2D1_SCALE_PROP_SCALE, ...);

     renderTarget->DrawImage(globalScale, point);
}

第一个方法实际上应该更快,因为在呈现中,我只需要绘制简单的位图。

正如我在这篇文章中所写的,我认为第二种方法在大量图像的情况下应该工作得更快,当部分图像脱离屏幕时,但是目前,用这种方法绘制一幅图像比用图像预标度方法绘制一幅图像要快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73637360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档