[I just solved this, but leaving it here in case it’ll help anyone else] I realized that I didn’t actually call FileUtils::getInstance()->setWritablePath(my_path), I was just using my path. Now everything is working great!
I just realized that I’m having a serious problem with this function. I have an in-game editor that worked great last year, but this year I’ve changed my writablePath to use a folder under the Documents folder. This makes it so much easier for the users than using appdata/local.
However, now the RenderTexture::saveToDisk is still writing to the appdata/local subfolder, which means it’s broken for me. I’ll see if there’s a way to copy the image to the actual working folder after I create it (tricky, since it’s asynchronous).
Surely there’s a better solution? I don’t understand why I can’t give an absolute path to saveToDisk, nor why it’s ignoring my actual working directory.