1

我正在尝试创建一个 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 开发驱动程序 286.16。谁能看到我做错了什么?

干杯

4

1 回答 1

3

如果您使用的是core context,那么这应该是可以预料的。没有GL_LUMINANCEGL_ALPHA 图像格式了。

如果要模拟它们的效果,则需要创建单通道图像格式。所以GL_R16应该是你的内部格式。然后在纹理对象上设置纹理混合蒙版,以便将单个红色通道广播到 RGB 或 Alpha,如您所见。

这种方式真的更好。

于 2012-02-20T03:48:36.893 回答