小编Rya*_*ley的帖子

glTexImage2d和Null数据

这是一个奇怪的问题,但我想知道为什么glTexImage2d关心像素数据类型和Null数据的格式.glTexImage2d的签名是......

void glTexImage2D( GLenum target, GLint level, GLint internalFormat, 
           GLsizei width, GLsizei height, GLint border, GLenum format, 
           GLenum type, const GLvoid * data);
Run Code Online (Sandbox Code Playgroud)

internalFormat用于告诉图形驱动程序您要在gpu上存储数据,格式和类型告诉图形驱动程序对GLvoid*数据的期望.所以,如果我没有传递任何数据,例如通过传递null,为什么图形驱动程序会关心格式和类型是什么?所以这是一个奇怪的问题,因为有时它不会.它的时间,我没有检查每一次迭代但是,特别是在制作深度纹理时,或者我最近遇到的是整数类型,如GL_RED_INTEGER,GL_RG_INTEGER等和/或它们对应的内部格式如GL_R8I,GL_RGBA32UI.然而,任何"简单"类型都不必与internalFormat相对应,如GL_RGBA8,GL_RGBA32F等.出于某种原因,即使您没有通过,以前的特定数据类型和格式也必须精确任何数据.这是为什么?

c c++ opengl texture2d

11
推荐指数
2
解决办法
2040
查看次数

标签 统计

c ×1

c++ ×1

opengl ×1

texture2d ×1