【发布时间】:2012-07-08 10:03:20
【问题描述】:
我只是想做一个全屏游戏。我知道如何在 Windows 上更改分辨率,但如何在 Linux 下更改分辨率?是否有针对此的跨平台 QT 解决方案?我的 GLWidget 周围也有边框。如何让小部件覆盖整个窗口?
我只是要发布代码:
#include <QtOpenGL>
class GLWidget : public QGLWidget
{
public:
void initializeGL()
{
glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
glClearDepth(1.0f);
}
void paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
}
void resizeGL(int width, int height)
{
int side = qMin(width, height);
glViewport((width - side) / 2, (height - side) / 2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-0.5f, +0.5f, -0.5f, +0.5f, 4.0f, 15.0f);
glMatrixMode(GL_MODELVIEW);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDesktopWidget *desktop = app.desktop();
QWidget window;
GLWidget *glWidget = new GLWidget;
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(glWidget);
window.setLayout(mainLayout);
window.setWindowTitle("Hello GL");
window.resize(QSize(640, 480));
window.show();
window.showFullScreen();
return app.exec();
}
【问题讨论】:
-
SDL 可能是比 Qt 更好的游戏工具包。
-
看看xrandr。
-
实际上是在 Windows 上。这并不能回答我的问题。我最好的猜测是我需要使用 x window api 来做到这一点。然而,这引出了一个问题,如果我无论如何都要使用平台窗口库,为什么不首先使用它呢?另外我真的需要知道如何从 glwidget 中删除边框。
-
设置布局边距似乎可以解决边框问题,但我不确定这是否是最好的方法。反正我可以直接渲染到窗口吗?