【问题标题】:What could prevent OpenGL glDrawPixels from working on some video cards?什么可以阻止 OpenGL glDrawPixels 在某些视频卡上工作?
【发布时间】:2010-09-06 17:46:42
【问题描述】:

以下代码不会将数据写入 Intel 集成显卡(例如 MacBook)上的后台缓冲区。在 ATI 卡上,例如在 iMac 中,它会绘制到后台缓冲区。宽度和高度正确(以及 800x600 缓冲区)并且 m_PixelBuffer 正确填充为 0xAA00AA00。

到目前为止,我最好的猜测是需要设置 glWindowPos 存在一些问题。我目前没有设置它(或光栅位置),当我得到 GL_CURRENT_RASTER_POSITION 时,我注意到 ATI 卡上的默认值是 0,0,0,0,而英特尔是 0,0,0,1。当我将 ATI 卡上的光栅 pos 设置为 0,0,0,1 时,我得到与 Intel 卡相同的结果,没有任何内容被绘制到后台缓冲区。我缺少一些转换状态吗?这是一个 2D 应用程序,因此视图变换是一个非常简单的 glOrtho。

glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer);

如果我能提供更多信息,请询问。我几乎是 OpenGL 和 Mac 新手,所以我不知道我是否提供了足够的信息。

【问题讨论】:

    标签: macos opengl graphics


    【解决方案1】:

    我一直在使用英特尔的 OpenGL 实现时遇到问题,但我不确定这次是您的问题。我认为您遇到了一些字节顺序问题。阅读本文并随意尝试不同的包装和颜色顺序常量。

    http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_25.html

    我知道它是 OSX 指南,您可能可以在其他平台上找到类似的 OpenGL 文章。这应该适用。

    【讨论】:

      【解决方案2】:

      我一直遇到 OpenGL 问题 英特尔的实现

      这正是我所担心的,但我很难相信他们会搞砸像 glDrawPixels 这样基本的东西,而且,因为我可以通过更改光栅位置矢量来“复制”问题,这让我觉得这是我的错,我错过了一些基本的东西。

      我认为你遇到了一些问题 字节顺序问题

      这是我的第一个想法,我尝试过不同的包装,但没有结果。我还尝试将缓冲区中的值打包,如果混合后会显示可用的 alpha,但没有结果。这就是为什么我要咆哮光栅 pos 树,但老实说,我仍然不能 100% 确定。请注意,如果这会有所不同,我只针对英特尔 Mac。

      感谢您的链接,这是一本很好的阅读材料,可以收藏起来以备将来参考。我会升级,但直到我再获得 3 个代表点才能升级:)

      【讨论】:

        【解决方案3】:

        glDrawPixels 之类的基本功能不太可能无法正常工作。您是否尝试过一些非常简单的设置,例如 GL_RGBGL_RGBA 用于格式和 GL_UNSIGNED_BYTEGL_FLOAT 用于类型?如果没有,您能否与我们分享一个能够复制您的问题的最小程序?

        【讨论】:

          【解决方案4】:

          默认光栅位置应为 (0,0,0,1),但您可以重新设置以确保。

          在调用 glDrawPixels() 之前,尝试一下

          GLint valid;
          glGet(GL_CURRENT_RASTER_POSITION_VALID, &valid);
          

          这应该告诉您当前的光栅位置是否有效。如果是,那么这不是你的问题。

          【讨论】:

            猜你喜欢
            • 2012-09-21
            • 1970-01-01
            • 2013-09-01
            • 2012-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-07
            相关资源
            最近更新 更多