2011-09-05 126 views
1

我正在写我的第一个射线跟踪仪。我想让它实时工作。 我想使用opengl进行显示。 我想将我的屏幕写入浮点缓冲区并显示缓冲区。 我需要什么扩展和/或缓冲类型?Opengl浮动缓冲区

在此先感谢!

回答

3

我正在写我的第一个射线示踪剂。我想让它实时工作。

雄心勃勃!

我想使用opengl进行显示。我想将我的屏幕写入浮点缓冲区并显示缓冲区。

OpenGL可以直接从float缓冲区读取数据,例如,

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_FLOAT, data); 

但OpenGL可能会选择任何符合您选择的内部格式。 GL_RGB内部格式可以是任何可以以某种方式存储RGB数据的格式。你可以具体说明你想要什么。例如GL_RGB16告诉OpenGL你想要每个通道16位分辨率。实现可以选择每个通道使用24位,因为这允许存储16位。但最终的实施决定了,基于你对它的限制,它将采用哪种内部格式。

浮点帧缓存和纹理在OpenGL扩展通过GL_ARB_texture_floatGLX_ARB_fbconfig_floatWGL_ARB_fbconfig_float支持,但由于专利问题,不是所有的OpenGL实现实现它(ATI和NVIDIA这样做)。

+0

感谢您的回答! – user742010

+0

我很困惑,但“OpenGL可能会选择任何内部格式”。这是否意味着我无法指定像素格式RGB或BGR? – user742010

+0

@ user742010:您可以告诉OpenGL您提供给它的数据格式。但是,OpenGL可以自由选择内部任何看起来最好的东西。可以告诉OpenGL你想要的内部格式。看我的编辑。 – datenwolf