首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将图形叠加在OpenGL呈现上下文之上

将图形叠加在OpenGL呈现上下文之上
EN

Stack Overflow用户
提问于 2014-10-06 17:51:12
回答 1查看 1.5K关注 0票数 5

我试图覆盖图形在我的OpenGL渲染场景之上。

我已经成功地启动并运行了它,但是FPS的下降有点太多了。

我目前正在结合使用GLScene和Graphics32。

我所做的是将GLScene呈现上下文呈现为位图,将该位图应用于TImageView32,并在TImage32中进行一些最后的UI操作。

我用来呈现给位图的代码如下所示,它也减少了FPS:

代码语言:javascript
运行
复制
procedure RenderToBitmap;
  var b: TBitmap;
begin
  b:=TBitmap.Create;
  b:=GLSceneViewer.Buffer.CreateSnapShotBitmap; //TGLSceneViewer
  ImgVwr32.Bitmap.Assign(b); //TImageViewer32
  b.Free;
end;

我尝试过其他一些代码(参见下面的代码),它提供了一个实时呈现,但我无法修改ImageViewer32的"Bitmap“属性。换句话说:正在呈现GLScene呈现上下文,但没有呈现我自己的图形。守则:

代码语言:javascript
运行
复制
//The following line is put inside the FormCreate call
GLSceneViewer.Buffer.CreateRC(GetDC(ImgVwr32.Handle),false);

如何正确地将图形覆盖在呈现上下文之上,或者复制呈现上下文输出,而不丢失FPS?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 18:13:49

那么,通过避免整个GPU→CPU→GPU复制往返。上传您的覆盖到一个OpenGL纹理,并绘制整个场景使用一个大的纹理四边形。

OpenGL不是一个场景图,它只是一个比较复杂的绘图API。您可以随时更改视图端口和转换参数,而无需更改迄今绘制的像素。因此,只需切换到屏幕空间坐标系统并使用它绘制叠加图就很容易了。

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

https://stackoverflow.com/questions/26221895

复制
相关文章

相似问题

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