NeHe OpenGL第四十六課 全屏反走樣

2021-09-05 05:32:19 字數 2255 閱讀 7193

nehe opengl第四十六課:全屏反走樣

全屏反走樣

下面我們來介紹如何使用多重取樣,不向其他的擴充套件,我們在使用多重取樣時,必須在視窗建立時告訴它使用多重取樣,典型的步驟如下:

1、建立乙個視窗

2、查詢是否支援多重取樣

3、如果支援刪除當前的視窗,使用支援多重取樣的格式建立視窗

4、如果我們想使用多重取樣,僅僅啟用它既可。

了解了上面,我們從頭說明如何使用多重取樣,並介紹arb_multisample的實現方法:

#include #include #include #include "arb_multisample.h"

下面兩行定義我需要使用的畫素格式 

// 宣告我們將要使用#define wgl_sample_buffers_arb 0x2041#define wgl_samples_arb  0x2042

bool arbmultisamplesupported = false;

int arbmultisampleformat = 0;

下面這個函式在副檔名的字串中查詢,如果包含則返回true

// 判斷是否支援這個擴充套件bool wgli***tensionsupported(const char *extension)}

下面這個函式在副檔名的字串中查詢,如果包含則返回true 

// 初始化多重渲染bool initmultisample(hinstance hinstance,hwnd hwnd,pixelformatdescriptor pfd)

// 返回wglchoosepixelformatarb函式的入口

pfnwglchoosepixelformatarbproc wglchoosepixelformatarb = (pfnwglchoosepixelformatarbproc)wglgetprocaddress("wglchoosepixelformatarb");

if (!wglchoosepixelformatarb)

hdc hdc = getdc(hwnd);

int pixelformat;

int valid;

uint numformats;

float fattributes = ;

//下面的**設定多重取樣的畫素格式

int iattributes =;

// 首先我們測試是否支援4個取樣點的多重取樣

valid = wglchoosepixelformatarb(hdc,iattributes,fattributes,1,&pixelformat,&numformats);

// 如果返回true並且numformats大於1,則表示成功,那麼起用多重取樣

if (valid && numformats >= 1)

// 接著我們測試是否支援2個取樣點的多重取樣

iattributes[19] = 2;

// 如果返回true並且numformats大於1,則表示成功,那麼起用多重取樣

valid = wglchoosepixelformatarb(hdc,iattributes,fattributes,1,&pixelformat,&numformats);

if (valid && numformats >= 1)

// 返回支援多重取樣

return arbmultisamplesupported;}

下面到了我們的主程式部分了,和前面一樣還是按照常規包含一些標頭檔案 

#include #include

#include #include "nehegl.h" 

#include "arb_multisample.h"

bool destroywindowgl (gl_window* window);

bool createwindowgl (gl_window* window);

下面我們需要在createwindowgl函式中新增下面的**,首先我們先建立乙個不需要支援多重取樣的視窗,它在不啟用多重取樣的情況下起作用。 

//如果不啟用多重取樣 if(!arbmultisamplesupported) 

}//如果起用多重取樣

else

接著測試是否支援多重取樣,如果支援,初始化多重取樣,並重新建立視窗   

//檢測是否支援多重取樣 if(!arbmultisamplesupported && check_for_multisample)  }

好了建立好多重取樣後,只需要起用它。其他的一切繪製都和平常一樣。    

韓順平網頁設計第四十六講

dom把html中的每個元素都當成乙個node 節點 來看待,每個node都有很多方法。具體如下表 在dom程式設計中,乙個html文件會被當做dom樹對待,所有的html元素都被轉換成node節點。所以我們就可以用node 節點的屬性和方法來操作這些html元素。比如上圖的方法。document的...

愛情四十六課,創造對的人

於千萬人之中,遇見你要遇見的人。於千萬年之中,時間無涯的荒野裡,沒有早一步,也沒有遲一步,遇上了也只能輕輕地說一句 你也在這裡嗎?這是張愛玲女士 愛 中,最經典的一句話,被渴愛的人奉為聖經。破除mr right的神話 我們一生中可以遇見很多 對的人 這並不像我們常規認定的 一輩子只有乙個人是正確的另...

第四十六課 繼承中的構造與析構 狄泰軟體學院

一 如何初始化父類成員?父類建構函式和子類建構函式有什麼關係?子類中可以定義建構函式 子類建構函式 1 必須對繼承而來的成員進行初始化 2 直接通過初始化列表或者賦值的方式進行初始化 3 呼叫父類建構函式進行初始化 父類建構函式在子類中的呼叫方式 1 預設呼叫 適用於無參建構函式和使用預設引數的建構...