gpt4 book ai didi

opengl - OpenGL 中未初始化的纹理

转载 作者:行者123 更新时间:2023-12-01 08:10:18 25 4
gpt4 key购买 nike

有没有一种在 OpenGL 中创建未初始化纹理的简单快捷的方法?

我目前的做法是这样的:

std::vector<byte> nothing = std::vector<byte>([size of texture in bytes]);
glTexImage(
target,
level,
internalFormat,
size,
border,
format,
type,
nothing
);

但这不涉及任何内容的上传。

另一种方法是创建一个未初始化的缓冲区(通过在没有数据的情况下调用 glBufferData)并从该缓冲区创建纹理。但是 afaik 这有两倍的内存占用(而且我的内存预算很低)。

有没有一种创建纹理的好方法,可以在不使用带宽或额外内存的情况下稍后写入?

最佳答案

只需为数据传递一个空指针。这就是从版本 1 开始在 OpenGL 中指定的方式。来自 OpenGL 1.2 规范,第 3.8.1 节,第 118 页,最后一段:

If the data argument of TexImage1D, TexImage2D, or TexImage3D is a null pointer (a zero-valued pointer in the C implementation), a one-, two-, or three-dimensional texture array is created with the specified target, level, internalformat, width, height, and depth, but with unspecified image contents. In this case no pixel values are accessed in client memory, and no pixel processing is performed. Errors are generated, however, exactly as though the data pointer were valid.

关于opengl - OpenGL 中未初始化的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com