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 預設呼叫 適用於無參建構函式和使用預設引數的建構...