首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GPU、Direct3D或OpenGL自定义呈现

使用GPU、Direct3D或OpenGL自定义呈现
EN

Stack Overflow用户
提问于 2019-01-30 17:45:10
回答 1查看 283关注 0票数 0

我有一个Windows应用程序,目前主要使用MFC呈现图形,为了更好地利用GPU,我想对其进行修改。大多数图形都是简单明了的,可以很容易地构建成场景图,但是有些图形可能非常困难。具体来说,除了普通的网格类型对象之外,我还处理点云,这些云可能包含数十亿笛卡尔,存储方式非常紧凑,使用了大量定制的裁剪技术来实时显示(示例)。我要找的是一种机制,它可以将大部分场景呈现给缓冲区,然后让我访问该缓冲区、z缓冲区和摄像机参数,这样我就可以在将它们放到显示器前修改它们。我想知道在Direct3D、OpenGL或可能使用更高级别的框架(如OpenSceneGraph )时,这是可能的,最好的起点是什么?考虑到该软件是基于Windows的,我可能更喜欢使用Direct3D,因为这可能导致驱动程序问题最少,这是我渴望避免的。OpenSceneGraph似乎通过八叉树提供自定义筛选,这些树非常接近,但与我所使用的不完全相同。

编辑:要澄清一点,目前我有以下几点;

  1. 内存中的显示列表/场景,通常包含数百万个三角形、线条和文本,是我在软件中选择的,然后使用低性能的绘图原语输出到位图中。
  2. 内存中的点云,它可能包含数十亿个高度压缩格式的点(每个3d点~4.5个字节),我选择并输出到相同的位图
  3. 在输出之前添加到位图中的游标信息。
  4. 一种用于导航和挑选的照相机、z缓冲区和属性缓冲区。

慢位是第1节中突出显示的部分,我想用GPU渲染来代替它。我设想的解决方案是为GPU构建一个场景,根据我当前的相机参数将其呈现给位图(带有匹配的z-缓冲区),然后在输出之前添加我的点云。

或者,我可以移动到一个基于场景的框架,为我管理相机和导航,并在呈现循环中根据体积和细节级别提供视点作为球体或碎屑。在这个场景中,我还需要能够向视图中添加游标信息。

在任何一种情况下,宿主应用程序都将是基于C++的MFC VS2017,这将需要太多的工作来进行本练习所需的更改。

EN

回答 1

Stack Overflow用户

发布于 2019-01-31 20:59:01

很难准确地根据你对一个复杂问题的描述来说。

OSG可能会做你想要的。

根据您的时间框架,我会考虑避免使用OpenGL (OSG)和DirectX来支持更新的Vulkan 3D API。它是D3D和OGL的继承者,是由GPU制造商自己设计的,以提供超过其前身的最佳性能。

OSG项目目前正在开发一个名为VSG的Vulkan扫描图,它已经显示了比OSG优越的性能,并将具有更广泛的剔除能力。

我和点云一起工作过,并且对它们很有经验,但我不太清楚你打算做什么。

如果你真的想就此事进行口头讨论,我很容易找到(我的公司是AlphaPixel - AlphaPixel.com),你可以打电话给我们。我现在在欧洲时区,从你的问题上还不清楚你在哪里,但你听起来是美国的。

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

https://stackoverflow.com/questions/54446515

复制
相关文章

相似问题

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