2017-03-07 12 views
2

QtやGTKなどの従来のGUIツールキットを使用する代わりに、GLFWとOpenGLを使用することによってどのような制限が生じるのかを知りたいと思います。GUIでGLFWとOpenGLを使用する場合の制限

もちろん、OpenGLを使ったGLFWは同じレベルの機能を公開していないことがわかりますが、いくつかの種類のウィジェットが必要な場合は、簡単に実装できると思います。

QtやGTKとは対照的に、GLFW/OpenGLの上に実装できなかった機能がありますか?

たとえば、ウィンドウ領域外のメニューを描画することに心配しています(この場合、非装飾の補助ウィンドウが使用できると思います)。

答えて

1

私はOpenGLとGLFWは、同じレベルの機能を公開していないことを知っているが、ウィジェットの少数の種類が

を必要としている場合、それは、OpenGLになると、任意の制限はありませんそれ自体。あなたはどこでも何でも好きなものを描くことができます。あなたが描くことができる領域は、オペレーティングシステムの側面からの制限要因です。

テキストボックスのような「シンプル」な機能は、すでに複雑なものです。レンダリングを処理するだけでなく、スケーラブルなテキストが常に楽しいとは限りませんが、キーボードイベントも処理する必要があります。カーソルやテキストの選択などを描く。

たとえば、私はウィンドウ領域の外にあるメニューを描画することに心配しています(この場合は、非装飾の補助ウィンドウが使用できると思います)。

ウィンドウ領域外に描画する場合、これはOpenGLに直接関係しません。 OSによってはもっと問題になります。

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; 
} 

注意を。

すでにウィンドウがある場合、SetWindowRgn()を使用して、アプリケーションで描画できる領域を変更できます。このエリアを変更することはできません。すべてがうまくいくでしょう。

QtやGTKとは対照的に、GLFW/OpenGLの上に実装できない機能がありますか?

ボトムラインではありません。 QtやGTKにあるOpenGLで実装できない機能はありません。要点は、OpenGLだけではなく、オペレーティングシステムに依存することが多いため、OS固有のコードが必要です。

+0

私はOpenGLですべてをレンダリングできることを知っていますが、OSが物事を制限する可能性があることを指摘しています。 WinAPIについて言及しました。私の質問は、Qt/GtkよりもGLFW(OS固有のコードを使用しない)を選択することによってどのようなOS関連の制限事項がありますか? – dv1729

+0

@ dv1729それは最終目標が何であるかによって大きく左右されます。ウィンドウ領域外の描画が重要な要素である場合、OSライブラリを使用しないと(これは他のクロスプラットフォームライブラリを使用しない限り)可能性が高いです。しかしそれ以外には、それ自体に制限はありません。 – Vallentin

関連する問題