cubemap problem when not using mipmapping

Hi! I was wondering if anyone can spot what I’m doing wrong. When using the code below, I get black color back whenever I do a texture lookup. However, if I generate mipmaps for each face I get the expected image. The texture lookup is performed in GLSL doing textureCube(cubeMap, R).rgb where cubeMap is declared as samplerCube. I have a GeForce 6800GT and Linux graphics driver 1.0-7676 installed. Having the minification filter set to GL_LINEAR should make all texture lookups access only level 0 of the texture, especially as no texture lod bias is given in the textureCube call in the shader. I’d be very grateful for any input regarding what I may be doing wrong.

GLuint createCubeMap(const CVector3& eye, unsigned int size)
{
	GLfloat dirUpVecs[6][6] = {
		{  1.0,  0.0,  0.0, 0.0, -1.0,  0.0 },
		{ -1.0,  0.0,  0.0, 0.0, -1.0,  0.0 },
		{  0.0,  1.0,  0.0, 0.0,  0.0,  1.0 },
		{  0.0, -1.0,  0.0, 0.0,  0.0, -1.0 },
		{  0.0,  0.0,  1.0, 0.0, -1.0,  0.0 },
		{  0.0,  0.0, -1.0, 0.0, -1.0,  0.0 }
	};
	
	GLuint cubeMap, rb, fb;
	
	// Initialize color cube texture -----------------------------------
	glGenTextures(1, &cubeMap);
	glBindTexture(GL_TEXTURE_CUBE_MAP, cubeMap);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);

	glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA8, size, size, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
	glGenerateMipmapEXT(GL_TEXTURE_CUBE_MAP);

	// Initialize depth renderbuffer -----------------------------------
	glGenRenderbuffersEXT(1, &rb);
	glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rb);
	glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, size, size);

	// Assemble framebuffer object -------------------------------------
	glGenFramebuffersEXT(1, &fb);
	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
							  GL_TEXTURE_CUBE_MAP_POSITIVE_X, cubeMap, 0);
	glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
								 GL_RENDERBUFFER_EXT, rb);
								 
	if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) != GL_FRAMEBUFFER_COMPLETE_EXT)
	{
		cerr << "Framebuffer object not complete..." << endl;
		exit(1);
	}

	int viewport[4];
	glGetIntegerv(GL_VIEWPORT, viewport);
	glViewport(0, 0, size, size);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(90.0, 1.0, zNear, zFar);
	glMatrixMode(GL_MODELVIEW);

	// Generate maps for all 6 sides
	for (int i = 0; i < 6; ++i)
	{
		glLoadIdentity();
		gluLookAt(eye.x, eye.y, eye.z,
				  eye.x + dirUpVecs[i][0], eye.y + dirUpVecs[i][1], eye.z + dirUpVecs[i][2],
				  dirUpVecs[i][3], dirUpVecs[i][4], dirUpVecs[i][5]);

		glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
								  GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, cubeMap, 0);
		draw();
	}

	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

	glDeleteRenderbuffersEXT(1, &rb);
	glDeleteFramebuffersEXT(1, &fb);

	reshape(viewport[2], viewport[3]);
	return cubeMap;
}