Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt GUI使用GLFW和OpenGL的局限性_Qt_User Interface_Opengl_Gtk_Glfw - Fatal编程技术网

Qt GUI使用GLFW和OpenGL的局限性

Qt GUI使用GLFW和OpenGL的局限性,qt,user-interface,opengl,gtk,glfw,Qt,User Interface,Opengl,Gtk,Glfw,我想知道使用GLFW和OpenGL而不是使用传统的GUI工具包(如Qt或GTK)会产生什么样的限制 当然,我知道使用OpenGL的GLFW不会公开相同级别的功能,但是如果只需要一些小部件,我认为它们可以很容易地实现 问题是,与Qt或GTK相比,GLFW/OpenGL上是否有一些功能无法实现 例如,我担心在窗口区域之外绘制菜单(我想在这种情况下可以使用辅助的非装饰窗口) 我知道使用OpenGL的GLFW不会公开相同级别的功能,但是如果只需要一些小部件的话 说到OpenGL,它本身没有任何限制。你可

我想知道使用GLFW和OpenGL而不是使用传统的GUI工具包(如Qt或GTK)会产生什么样的限制

当然,我知道使用OpenGL的GLFW不会公开相同级别的功能,但是如果只需要一些小部件,我认为它们可以很容易地实现

问题是,与Qt或GTK相比,GLFW/OpenGL上是否有一些功能无法实现

例如,我担心在窗口区域之外绘制菜单(我想在这种情况下可以使用辅助的非装饰窗口)

我知道使用OpenGL的GLFW不会公开相同级别的功能,但是如果只需要一些小部件的话

说到OpenGL,它本身没有任何限制。你可以在任何地方画任何你想画的东西。从操作系统的角度来看,您可以画出的区域是一个限制因素

记住一些“简单”的功能,比如说文本框,已经很复杂了。您不仅必须处理渲染(可伸缩文本并不总是有趣),还必须处理键盘事件。绘制光标和文本选择等

例如,我担心在窗口区域之外绘制菜单(我想在这种情况下可以使用辅助的非装饰窗口)

当涉及到在窗口区域外绘制时,这与OpenGL没有直接关系。这更多的是一个取决于操作系统的问题

例如,使用WinAPI,您只需执行以下操作即可在屏幕上的任意位置绘制:

#include <Windows.h>

int main(int argc, char **argv)
{
    HWND desktop = GetDesktopWindow();
    HDC dc = GetDC(desktop);

    RECT rect = { 20, 20, 200, 200 };
    HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
    FillRect(dc, &rect, brush);

    return 0;
}
#包括
int main(int argc,字符**argv)
{
HWND desktop=GetDesktopWindow();
HDC dc=GetDC(桌面);
RECT RECT={20,20,200,200};
HBRUSH笔刷=CreateSolidBrush(RGB(0,0,255));
FillRect(直流和直流、电刷);
返回0;
}
请注意,当屏幕重新绘制该区域时,矩形将立即消失

当您已经有一个窗口时,您可以使用更改允许应用程序在其中绘制的区域。请注意,你不能只是改变这一领域,一切都会很好

问题是,与Qt或GTK相比,GLFW/OpenGL上是否有一些功能无法实现


底线是没有。在Qt和GTK中,没有任何功能不能用OpenGL实现。关键是,它不仅仅是OpenGL,而且它在很大程度上取决于操作系统,因此需要特定于操作系统的代码。

我知道我可以用OpenGL渲染所有内容,但正如您所指出的,操作系统可以限制一切。你提到了WinAPI。。。我的问题是:通过选择GLFW(不使用特定于操作系统的代码)而不是Qt/Gtk,我应该期待什么样的操作系统相关限制?@dv1729这在很大程度上取决于最终目标是什么。如果在窗口区域外绘图是一个重要因素,那么如果不使用OS库,这很可能是不可能的(除非为此使用其他跨平台库)。但除此之外,本质上没有任何限制。