I figured it out:

the call to the constructor for the scene was in the constructor of its parent (the GLwidget)

this meant that loadtexture() was being called before gl was initialized

i moved things around so loadtexture wound up happening during the parent's initializeGL function and then it worked