docs: def findOrLoadRenderModel(self, pchRenderModelName):
          "Purpose: Finds a render model we've already loaded or loads a new one"
          pRenderModel = None
          for model in self.m_vecRenderModels:
              if model.getName() == pchRenderModelName:
                  pRenderModel = model
                  break
          # load the model if we didn't find one
          if pRenderModel is None:
              error = openvr.EVRRenderModelError()
              while True:
                  error, pModel = openvr.VRRenderModels().loadRenderModel_Async( pchRenderModelName )
                  if error != openvr.VRRenderModelError_Loading:
                      break
                  threadSleep( 1 )
              if error != openvr.VRRenderModelError_None:
                  dprintf( "Unable to load render model %s - %s\n" % (
                          pchRenderModelName, 
                          openvr.VRRenderModels().getRenderModelErrorNameFromEnum( error )) )
                  return None # move on to the next tracked device
              while True:
                  error, pTexture = openvr.VRRenderModels().loadTexture_Async( pModel.contents.diffuseTextureId )
                  if error != openvr.VRRenderModelError_Loading:
                      break
                  threadSleep( 1 )
              if error != openvr.VRRenderModelError_None:
                  dprintf( "Unable to load render texture id:%d for render model %s\n" % (
                          pModel.contents.diffuseTextureId, pchRenderModelName) )
                  openvr.VRRenderModels().FreeRenderModel( pModel )
                  return None # move on to the next tracked device
              pRenderModel = CGLRenderModel( pchRenderModelName )
              if not pRenderModel.bInit( pModel.contents, pTexture.contents ):
                  dprintf( "Unable to create GL model from render model %s\n" % pchRenderModelName )
                  # delete pRenderModel
                  pRenderModel = None
              else:
                  self.m_vecRenderModels.append( pRenderModel )
              openvr.VRRenderModels().freeRenderModel( pModel )
              openvr.VRRenderModels().freeTexture( pTexture )
          return pRenderModel