我想为我的OpenGL应用程序编写一个编辑器。 OpenGL应用程序自行执行,并使用SDL2库创建自己的窗口。我已经创建了一个Qt小部件GUI,我通过单击一个按钮启动QProcess,该按钮启动左侧的OpenGL应用程序:
我已经阅读过如何将消息发送到其他进程,虽然我不确定这是否是理想的方法,但我决定尝试写入OpenGL的标准输入来自Qt GUI窗口的应用程序。因此,当点击GUI中的按钮时,我的代码就是:
void MainWindow::on_pushButton_2_clicked()
{// engineProcess is a pointer to the OpenGL QProcess started earlier.
const char* ch = "Hello";
engineProcess->write(ch, 5);
// engineProcess->writeData()
}
然后在我的OpenGL应用程序中,我尝试每次更新:
fseek(stdin, 0, SEEK_END);
int num = ftell(stdin);
if (num > 0)
GUI::OSDlog.addLogEntry("input");
我的理解是,这会检查OpenGL应用程序的标准输入是否为空。但是,从未添加任何输入。我不知道该怎么做。
如果我使用char ch = getchar()并且输入为空,则OpenGL应用程序将停止,直到stdin中存在某些内容,这就是我检查的原因。
另外,我不知道这是否是向流程发送消息的最佳方式。如果有更好的方法,请告诉我。