【问题标题】:How do I update part of a texture?如何更新纹理的一部分?
【发布时间】:2023-03-18 18:33:01
【问题描述】:

似乎 glTexSubImage2D 需要一个指向完整纹理缓冲区的指针。如何仅通过提供指向更新区域而不是整个缓冲区的指针来对纹理进行部分更新?

例如,如果我想将第二张图像叠加到现有纹理上,而不是将图像数据复制到我的纹理缓冲区然后调用 glTexSubImage2D,我只需使用 opengl 来更新纹理,而无需在 RAM 位置之间复制数据。

【问题讨论】:

    标签: opengl


    【解决方案1】:

    您从哪里得到glTexSubImage2D 需要指向完整纹理缓冲区的指针的概念?

    从上面链接的文档中,在我看来,最后一个参数是指向仅包含新数据的缓冲区的指针。其他参数用于指定要更新的纹理对象(只是一个 OpenGL 标识符,不需要指向原始数据的指针)以及将新数据复制到的偏移量和大小。

    TL;DR:glTexSubImage2D 采用指向您的新数据的指针,并完全按照您在示例中的想法:)

    【讨论】:

    • 感谢您的回复。我实际上发现我的问题是我在一个单独的线程中进行纹理更新,这导致了问题。试图弄清楚现在如何解决这个问题。再次感谢!
    • 不客气!关于 OpenGL 和多线程,这个问题可能会有所帮助:stackoverflow.com/questions/4567296/opengl-and-threading
    猜你喜欢
    • 2019-04-16
    • 2014-01-05
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2016-12-05
    • 2013-10-22
    相关资源
    最近更新 更多