我正在写我的第一个光线追踪器。我想让它实时工作。 我想用opengl进行显示。 我想将我的屏幕写入浮点缓冲区并显示缓冲区。 我需要什么扩展和/或缓冲区类型?
提前致谢!
答案 0 :(得分:3)
我正在写我的第一个光线追踪器。我想让它实时工作。
宏大!
我想用opengl进行显示。我想将我的屏幕写入浮点缓冲区并显示缓冲区。
OpenGL可以直接从浮动缓冲区读取,例如
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_float
,GLX_ARB_fbconfig_float
,WGL_ARB_fbconfig_float
支持浮点帧缓冲和纹理,但由于专利问题,并非所有OpenGL实现都实现它(ATI和NVidia都可以)。