为什么我的无符号字节需要两倍大



我正在断开程序渲染部分与Qt的连接,并将其升级到OpenGL 4。

我遇到了一个关于纹理的奇怪问题,我因为没有向glTexImage提供正确大小的数据而受到指责。这很奇怪,因为我很确定我为它提供了正确大小的数据。

int n = 1*g_windowHeight*g_windowHeight;
//int n = 2*g_windowHeight*g_windowHeight; Doesn't segfault but doesn't make sense to me
auto data = (GLbyte*) malloc(n*sizeof(GLbyte));
glBindTexture(GL_TEXTURE_2D,textures[i]);
glTexImage2D(GL_TEXTURE_2D,0,GL_R8,g_windowWidth,g_windowHeight,0,GL_RED,GL_UNSIGNED_BYTE,data); //

中0x0000000180012212(ig4cd64.dll)处出现未处理的异常renderMan.exe:0xC0000005:读取位置时发生访问冲突0x0000007035F7000.

如果我使用GL_R8,为什么GL_R8需要每个像素2个字节?

这是一个拼写错误:

int n = 1*g_windowHeight*g_windowHeight;

应为:

int n = 1*g_windowWidth*g_windowHeight;
//                ^^^^^

最新更新