Texture won't render on simple quad

OK.

The first approach I’d try is simply to use the whole texture and then display only one of the sprites in the rendering. You may have issues with the fact that your image is a non-power of two size, I would recommend always using power of two size images if possible.

So use:

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, heigh, GL_RGBA, GL_UNSIGNED_BYTE, sprite_sheet);

And in your render adjust the texture coordinates:

glTexCoord2f(0, 1.0f/18.0f); glVertex2f(16, 48);
glTexCoord2f(1.0f/29.0f, 1.0f/18.0f); glVertex2f(48, 48);
glTexCoord2f(1.0f/29.0f, 0); glVertex2f(48, 16);
glTexCoord2f(0, 0); glVertex2f(16, 16);

You may need to adjust these coordinates slightly, and you may find your image is upside down compared to what you expect.