glTexImage2D空数据指针和内存初始化



让我们假设2D纹理是使用带有空数据指针的glTexImage2D定义的。传递空数据指针会使内存归零吗?或者当片段着色器对该纹理进行采样时,我可能会得到一些垃圾数据?

vec3 color = texture(texture0, texCoord).xyz;

文档明确指出:

数据可能是一个空指针。在这种情况下,纹理内存被分配来容纳宽度宽度和高度…的纹理如果用户试图将纹理图像的未初始化部分应用于基元,则图像未定义

所以是的,你会得到垃圾。请记住,零也是有效的垃圾,所以不要用它来证明它是"垃圾";作品";。

将纹理清除为零的最简单方法是使用glClearTexImage:

glClearTexImage(texture, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

对于这个函数,CCD_;全部为零";。

最新更新