我想用C++做一个基本的实时CPU ray tracer (主要是为了学习建议)。This tutorial非常适合制作基本的光线跟踪器。但是,什么是最好的解决方案,以实时绘制在屏幕上?我不是在问如何优化光线跟踪部分,只是问绘制部分,以便它可以在屏幕上绘制,而不是在文件中绘制。
我正在windows上/为windows进行开发。
发布于 2012-05-27 00:52:01
您可以使用Win32API在基本的绘制机制上查看this Code Project article
更新: OP需要快速绘图,这是Win32API所不提供的。OP需要这样做,以便他们可以在优化过程中测量光线跟踪算法的加速比。其他可能的绘图是: DirectX,XNA,Allegro,OpenGL。
发布于 2016-04-04 18:10:03
我是一个专业的实时CPU光线跟踪器,从我看到的两年的工作,GPU部分显示图像不会是瓶颈,如果你达到它的瓶颈将是你的RAM的速度,我不认为绘图技术会有任何显着的不同。
例如,我们使用集群(一个CPU是不够的:p),我们能够以1920x1080的速度渲染100-200fps,但瓶颈不是显示部分,而是网络……编辑:我们使用OpenGL来显示。
当你做一个CPU,你不会做printPixelToGPU(),但你会写你的内存,然后在图像完成后将其发送到GPU。做printPixelToGPU()可能会导致很大的开销,而且(在我看来)这是一个非常糟糕的设计选择。
这看起来像是过早的优化。但如果你仍然担心这一点,只需做一个工作台有多少内存纹理到图形处理器传输,你可以做的OpenGL,directX…,并打印平均帧率。您可能会看到帧速率将非常非常高,因此您肯定永远不会达到那个“瓶颈”,除非您使用的是SDRAM或非常差的GPU。
https://stackoverflow.com/questions/10768034
复制相似问题