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

时间:2013-07-01 10:19:06

标签: c++ opengl

我正在将我的程序的渲染部分与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(ig4icd64.dll)中的未处理异常   renderMan.exe:0xC0000005:访问冲突读取位置   0x0000007035F7C000。

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

1 个答案:

答案 0 :(得分:9)

这是一个错字:

int n = 1*g_windowHeight*g_windowHeight;

应该是:

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