我正在将我的程序的渲染部分与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个字节?
答案 0 :(得分:9)
这是一个错字:
int n = 1*g_windowHeight*g_windowHeight;
应该是:
int n = 1*g_windowWidth*g_windowHeight;
// ^^^^^