2011-09-05 110 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