创建空白opengl纹理

创建空白opengl纹理,opengl,textures,Opengl,Textures,我正在开发一个游戏引擎,纹理类中的一个函数应该是创建一个具有指定宽度、高度和像素格式的空白纹理 我知道如何创建纹理以及所有这些,我还知道我可以使用glTexImage2d将其格式化,并使用null作为数据。但让我烦恼的是,我必须告诉openGL我的数据的格式(即使它是空的),这意味着我必须编写一个函数,将PIXEL_INTERNAL_format枚举转换为PIXEL_格式和PIXEL_类型 如何让opengl仅基于像素内部格式分配内存?像素内部格式和像素类型不应匹配像素内部格式。它们应该描述您传

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

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


如何让opengl仅基于像素内部格式分配内存?

像素内部格式
像素类型
不应匹配
像素内部格式
。它们应该描述您传入的数据,因此OpenGL可以在必要时对其进行转换。当没有数据传入时,将不会进行转换


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

我也是这么想的。但是如果我使用深度组件作为像素内部格式创建纹理,如果我使用深度组件以外的任何组件作为像素格式,OpenGL会给我一个无效的操作错误。@Hannesh:你说得对:“如果internalFormat是GL_DEPTH_COMPONENT、GL_DEPTH_COMPONENT 16、GL_DEPTH_COMPONENT 24或GL_DEPTH_COMPONENT 32,且格式不是GL_DEPTH_COMPONENT,则会生成GL_INVALID_操作。”但这些特殊情况很少。