gpt4 book ai didi

c++ - Qt 应用程序适用于台式机,但不适用于笔记本电脑?

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:26 24 4
gpt4 key购买 nike

我正在使用 Qt 编写一个 OpenGL 应用程序,它在我的桌面上构建并运行良好,但是当我尝试在我的笔记本电脑上运行完全相同的代码时,它构建但不输出任何东西?这是我的 main.cpp

#include <QtGui/QApplication>
#include <QtOpenGL/QGLWidget>
#include "GLWidget.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

GLWidget window;
window.resize(1050,700);
window.setFixedSize(1050, 700);
window.show();

return app.exec();
}

我不希望用户能够调整窗口大小,因此是固定大小。如果我在 main 的最后一行设置断点,它永远不会在我的笔记本电脑上到达它。我已经逐步完成代码,在调用 show() 之后(这只是一个内联函数)调试器以代码 0 结束。我检查了所有项目构建和运行设置,它们在两台机器上都是相同的。我的台式机有一个 1920x1080 的显示器,但我的笔记本电脑只有 1366x768,这与它有什么关系吗?在 Qt 的引擎盖下是否有某种内部检查取决于我的屏幕分辨率?这几乎是我唯一能想到的。

最佳答案

I do not want the user to be able to resize the window

请问为什么?我可以假设您希望窗口的大小是固定的,因为您想使用 OpenGL 生成这个大小的图像吗?如果是这样,那么我必须告诉你,那样做是行不通的。 OpenGL 实现只会渲染屏幕上可见的内容(像素所有权测试)。如果窗口的某些部分不可见(在您的情况下,笔记本电脑就是这种情况),则根本不会渲染这些像素。读出帧缓冲区将使这些像素未定义。

解决此问题的正确方法是使用 PBufferFrame Buffer Object (FBO)。 FBO 更易于使用,但在 Windows 上不受广泛支持(Windows 上的英特尔图形对 FBO 的支持相当差)。所有 Linux OpenGL 实现(Mesa(也支持 Intel)、ATI/AMD 和 NVidia)都支持 FBO。网络上有许多 FBO 和 PBuffer 教程。

关于c++ - Qt 应用程序适用于台式机,但不适用于笔记本电脑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com