2016-12-20 16 views
0

私はGL_ARB_FRAMEBUFFER_OBJECTまたはGL_EXT_FRAMEBUFFER_OBJECTエクステンションのいずれかを使用してテクスチャにレンダリングするためにOpenGL FrameBuffer Objects(FBO)を使用します。OpenGLフレームバッファサイズの制限は0です

しかし、ビデオカードのかなりの数(OGL 2.0、さらには3.0とほとんどインテル、)GL_ARB_FRAMEBUFFER_OBJECTをサポートするが、GL_MAX_FRAMEBUFFER_WIDTH = 0とGL_MAX_FRAMEBUFFER_HEIGHT = 0を持つので、私はFBOにテクスチャを添付しようとすると、それが失敗があります。

これらのビデオカードでテクスチャにレンダリングするのにFBOを使用できないということは本当ですか?回避策はありますか? テクスチャにレンダリングすることは非常に重要なレンダリング手法であり、どこでもDirect3Dでうまく動作するため、OpenGLを使用する方法もあるはずです。

+1

いいえ、そうではありません。 GL_MAX_FRAMEBUFFER_WIDTHは少なくとも16384である必要があります。これはドライバのバグかもしれませんが、表示されなかったコードのバグである可能性が高いことがわかります。 – ybungalobill

答えて

4

しかし、ビデオカードのかなりの数(OGL 2.0、さらには3.0とほとんどインテル、)GL_ARB_FRAMEBUFFER_OBJECTをサポートするが、GL_MAX_FRAMEBUFFER_WIDTH=0GL_MAX_FRAMEBUFFER_HEIGHT=0を持つので、私はFBOにテクスチャを添付しようとすると、それが失敗があります。

GL_ARB_framebuffer_objectGL_EXT_framebuffer_objectどちらGL_MAX_FRAMEBUFFER_WIDTHまたはGL_MAX_FRAMEBUFFER_HEIGHTを定義しません。

これらの列挙型は実際にはGL_ARB_framebuffer_no_attachments(OpenGL 4.3以降のコア)に追加されています。したがって、一部のインテルGPUがこれらをサポートしていないのは不思議ではありません。 (もしあなたがエラーをチェックするなら、あなたはglGetからGL_INVALID_ENUMを気づいていたでしょう - それはゼロを戻していないので、getにエラーを出しています。ただし、これらの制限はフレームバッファにのみ適用され、添付ファイルがない場合はとなるため、ここで間違ったプロパティをクエリしていることが主な点です。

フレームバッファには明示的なサイズ制限はありませんが、各添付ファイルタイプにはサイズ制限があります。 Renderbuffersは任意の次元で最大でGL_MAX_RENDERBUFFER_SIZEであり、2Dの最大値はGL_TEXTURE_SIZEです。 1回のパスでターゲットにレンダリングしたい場合は、GL_MAX_VIEWPORT_DIMSも気にしてください。

関連する問題