paroj / gltut

Learning Modern 3D Graphics Programming
https://paroj.github.io/gltut/
MIT License
1.57k stars 377 forks source link

freeglut (./Tut18BumpySquare): ERROR: Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow #153

Open dhylands opened 6 months ago

dhylands commented 6 months ago

If I try to run Tut18BumpySquare then I get the following error:

freeglut (./Tut18BumpySquare):  ERROR:  Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  4 (X_DestroyWindow)
  Resource id in failed request:  0x0
  Serial number of failed request:  38
  Current serial number in output stream:  41

If I edit the default function ini BumpySquare.cpp and change:

unsigned int defaults(unsigned int displayMode, int &width, int &height)
{
    g_displayWidth = width;
    g_displayHeight = height;
    return displayMode | GLUT_SRGB;
}

to look like (i.e. remove GLUT_SRGB)

unsigned int defaults(unsigned int displayMode, int &width, int &height)
{
    g_displayWidth = width;
    g_displayHeight = height;
    return displayMode;
}

then the program runs, but I'm not sure whether the effects shown are correct or not.

dhylands commented 6 months ago

My system is a Sytstem 76 Galago Pro, running Ubuntu 22.04 and `lspci | grep VGA' shows me:

00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)

and some of the info from glxinfo shows:

OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Xe Graphics (TGL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 24.0.0-1pop0~1706872735~22.04~0fa430c
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
dhylands commented 6 months ago

It appears that the Intel Grpahics Driver really has no sRGB frame buffers, so I just did a temporary hack and modified main to do:

    displayMode = defaults(displayMode, width, height);

    // Hack for Intel Graphics
    displayMode &= ~GLUT_SRGB;

and now I can run the demos