2

I am in the process of disconnecting the rendering portion of my program from Qt and upgrading it to OpenGL 4.

I ran into an oddity concerning textures, I am getting a segfault for not supplying glTexImage with the right size data. Which is strange because I am pretty sure I am supplying it with the right size data.

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); //

Unhandled exception at 0x0000000180012212 (ig4icd64.dll) in renderMan.exe: 0xC0000005: Access violation reading location 0x0000007035F7C000.

Why does GL_R8 want a 2 bytes per pixel if I am using GL_R8?

4

1 回答 1

9

这是一个错字:

int n = 1*g_windowHeight*g_windowHeight;

应该:

int n = 1*g_windowWidth*g_windowHeight;
//                ^^^^^
于 2013-07-01T10:24:21.730 回答