【问题标题】:Creating a blank opengl texture创建一个空白的opengl纹理
【发布时间】:2011-05-20 14:52:37
【问题描述】:

我正在开发一个游戏引擎,Texture 类中的一个功能应该是创建一个具有指定宽度、高度和像素格式的空白纹理。

我知道如何创建纹理以及所有这些,我也知道我可以使用 glTexImage2d 格式化它,并将 null 作为数据。让我烦恼的是,我必须告诉 openGL 我的数据格式(即使它为空),这意味着我必须编写一个函数,将 PIXEL_INTERNAL_FORMAT 枚举转换为 PIXEL_FORMAT 和 PIXEL_TYPE。

如何让 opengl 仅根据 PIXEL_INTERNAL_FORMAT 分配内存?

【问题讨论】:

    标签: opengl textures


    【解决方案1】:

    PIXEL_FORMATPIXEL_TYPE 不应匹配 PIXEL_INTERNAL_FORMAT。它们应该描述您传入的数据,因此 OpenGL 可以在必要时对其进行转换。没有数据传入时,不会进行转换。

    因此,当数据指针为空时(假设您没有 VBO 绑定),您可以为这两个参数使用任何合法值。

    【讨论】:

    • 我也是这么想的。但是,如果我使用 DEPTH_COMPONENT 作为 PIXEL_INTERNAL_FORMAT 创建纹理,如果我使用 DEPTH_COMPONENT 作为 PIXEL_FORMAT 以外的任何内容,OpenGL 会给我一个 INVALID_OPERATION 错误。
    • @Hannesh:你是对的:“如果 internalFormat 为 GL_DEPTH_COMPONENT、GL_DEPTH_COMPONENT16、GL_DEPTH_COMPONENT24 或 GL_DEPTH_COMPONENT32,并且格式不是 GL_DEPTH_COMPONENT,则会生成 GL_INVALID_OPERATION。”但是这些特殊情况很少。
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多