歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux系統下的OpenGL圖形程序框架

說到圖形界面編程,想到的大多是Windows下的多種多樣的應用程序。Linux是一個基於命令行的操作系統,在Linux下的工作大多是在命令行裡完成的,而並非像Windows那樣。圖形界面雖然並不是Linux的一部分,我們通過一些工具,依然可以編寫一些在Linux下的圖形應用程序。

OpenGL是一個工業標准的三維計算機圖形軟件接口,它由SGI公司發布並廣泛應用於Unix、OS/2、Windows/NT等多種平台,這其中當然也包括Linux。

X11也叫做X Window系統,X Window系統 (X11或X)是一種位圖顯示的 視窗系統 。它是在 Unix 和 類Unix操作系統,以及 OpenVMS 上建立圖形用戶界面的標准工具包和協議。Linux就是一個類Unix的操作系統。

有了這兩個工具,我們便能在Linux下進行圖形界面編程了。

1.創建窗口

由於X Window系統的協議和架構 X基於 客戶端-服務器 模型,首先創建一個連接,連接到X服務器。

dpy = XOpenDisplay(NULL);
    if (dpy == NULL)
        fatalError("could not open display");

對於X窗口系統來說,它所使用的OpenGL擴展是作為OpenGL的一個附件提供的,所以還需要檢測X服務器是否是支持OpenGL擴展。

if(!glXQueryExtension(dpy, &dummy, &dummy))
        fatalError("X server has no OpenGL GLX extension");

接下來就是給窗口找到一個合適的視覺樣式。比如有些支持雙緩沖,有些不支持,etc。

vi = glXChooseVisual(dpy, DefaultScreen(dpy), dblBuf);
    if (vi == NULL)
    {
        vi = glXChooseVisual(dpy, DefaultScreen(dpy), snglBuf);
        if (vi == NULL) fatalError("no RGB visual with depth buffer");
            glf_DoubleBuffer = GL_FALSE;
    }
    if(vi->class != TrueColor)
        fatalError("TrueColor visual required for this program");

Copyright © Linux教程網 All Rights Reserved