OpenGL多重取樣的初始化問題

2021-07-08 20:39:23 字數 1228 閱讀 5656

首先,opengl中多邊形反走樣需要開啟多重取樣才能正常的反走樣,否則設定無效

以下**只需在視窗尺寸發生變化時,執行一次即可:

glenable(gl_point_smooth);

glhint(gl_point_smooth_hint, gl_nicest);

glenable(gl_line_smooth);

glhint(gl_line_smooth_hint, gl_nicest);

glenable(gl_polygon_smooth);

glhint(gl_polygon_smooth_hint, gl_nicest);

glenable(gl_blend);

glblendfunc(gl_src_alpha, gl_one_minus_src_alpha); // 基於源象素alpha通道值的半透明混合函式

// 設定畫素格式

int copengldlg::setwindowpixelformat(hwnd hwnd,hdc hdc)

; int pixelformat = 14;//全屏多重取樣需要的pixelformat(注意,由於本**是嵌入到了mfc的dlg中,故而無法檢測多重取樣支援(該檢測持需要wgl初始化之後才能檢測,可是一旦初始化,則無法返回重新設定,建議採用乙個檢測dlg專門檢測,主dlg顯示內容或者採用多程序的方式檢測)

bool ret = setpixelformat(hdc, pixelformat, &pfd);

if (ret == false)

if (!setpixelformat(hdc, pixelformat, &pfd))

}if (!(m_hglcontext = wglcreatecontext(hdc)))

if (!wglmakecurrent(hdc, m_hglcontext))

return

0;}

注意,只要這裡int pixelformat = 14;的畫素點格式能夠支援,則後面多邊形反走樣即可開啟

之前查了很多資料,都沒有提到要開啟多重取樣

而開啟多重取樣的**又無法整合到mfc裡面去(需要銷毀視窗,重建hdc)

現在想到了這個變通的辦法,希望對大家有幫助。

OpenGL中的多重取樣

抗鋸齒處理的最大優點之一就是它能夠使多邊形的邊緣更為平滑,使渲染效果顯得更為逼真和自然。點和直線的抗鋸齒處理是得到廣泛支援的,但遺憾的是,對多邊形的平滑處理並沒有在所有平台上都得到實現。並且,即使在可以使用gl polygon smooth的時候,對整個場景進行抗鋸齒處理也沒有想象中的那麼方便。這是...

OpenGL之GLew初始化

今天下午弄了一下午的opengl,使用混合相關函式glblendcolor時,總是出現access violation出錯。查詢了半天,換用了最新版本的glee,成功了,總算不出錯了。但是為什麼glew會出錯呢?查了一下,由於微軟只支援到opengl 1.1版本,所以要使用擴充的特性必須利用glew...

多重繼承關係的初始化順序

多重繼承關係的初始化順序是 父類屬性 父類構造方法 子類屬性 子類構造方法 不能被子類繼承的父類成員 private成員 子類和父類不在同乙個包,使用預設訪問許可權的成員 構造方法 構造方法不會被重寫,因為不能被繼承。1 super關鍵字來訪問父類的成員 2 super只能出現在子類的方法和構造方法...