创建16位纹理时“无效枚举”

时间:2012-02-20 03:34:27

标签: opengl opengl-3

我正在尝试创建一个16位纹理来保存我的地形补丁的高度贴图,但是以下两种情况都会返回“无效的枚举”错误。 CHECK_GL_ERROR()宏将gluErrorString显示为消息,如果glGetError返回GL_NO_ERROR以外的其他内容则会中断。

CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE16, width_, depth_, 0, GL_LUMINANCE, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );
CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA16, width_, depth_, 0, GL_ALPHA, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );

我有一个创建的纹理绑定到GL_TEXTURE_2D目标,并且有和没有相同的错误:

glPixelStorei( GL_UNPACK_ALIGNMENT, 2 );

我在GTX 560Ti上使用OpenGL 3.2上下文,NVIDIA CUDA dev驱动程序286.16。谁能看到我做错了什么?

干杯

1 个答案:

答案 0 :(得分:3)

如果你使用的是core context,那么应该是这样的。暂无任何GL_LUMINANCEGL_ALPHA image formats

如果要模拟它们的效果,则需要创建单通道图像格式。因此GL_R16应该是您的内部格式。然后在纹理对象上设置texture swizzle mask,以便根据需要将单个红色通道广播到RGB或Alpha。

这种方式确实更好。