国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

全屏幕OpenGL程序

2019-09-06 23:34:00
字體:
供稿:網(wǎng)友

                    其實(shí)在BCB中實(shí)現(xiàn)全屏幕OpenGL的原理是很簡單的,只要在窗口OpenGL程序的基礎(chǔ)上做一個(gè)小小的改動即可:只要將窗口屬性修改為WS_POPUP就可以了。

具體如下:

在窗口類的CreateParam()成員函數(shù)中加入如下語句:
Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
將相應(yīng)窗口修改成WS_POPUP型窗口,另兩個(gè)是為支持OpenGL為設(shè)的。
仍在窗口類的CreateParam()成員函數(shù),加入如下語句:
ChangeResolution(800,600);
Params.Width=800;
Params.Height=600;
Params.X=Params.Y=0;
第一句將屏幕分辨率設(shè)定為800X600(可以是顯示卡支持的任意值)
然后修改窗體大小使之占滿全屏。
ChangeResolution()是一個(gè)自編的小函數(shù),其原理如下:
用WINAPI:EnumDisplaySettings()查詢并取得所需的顯示模式
用WINAPI:ChangeDisplaySettings()修改顯示模式。
ChangeResolution()的完整代碼:

BOOL ChangeResolution(DWORD w, DWORD h) {
DEVMODE devMode;
LONG modeSwitch;
LONG i;
CHAR buf[256];
i = 0;
do {
modeSwitch = EnumDisplaySettings(NULL, i, &devMode);
i++;
} while(( (devMode.dmBitsPerPel!=16)
||(devMode.dmPelsWidth != w)
||(devMode.dmPelsHeight != h) )
&& (modeSwitch) );
/* Okay see if we found a mode */
if (!modeSwitch) { }
else {
modeSwitch = ChangeDisplaySettings(&devMode, 0);
if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)
{
//Might be running in Windows95, let's try without the hertz change
devMode.dmBitsPerPel = 16;
devMode.dmPelsWidth = w;
devMode.dmPelsHeight = h;
devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
modeSwitch = ChangeDisplaySettings(&devMode, 0);
}
}
return TRUE;
}
樣本程序
說明:通常這個(gè)程序運(yùn)行時(shí)會看到屏幕底部有道白線,這是任務(wù)欄造成的,如果你將它的總在最前面(always on top)去掉或者將本程序窗口作成Always On Top型就不會再看到它了。
上一篇:超星格式

下一篇:如何在BCB中使用DirectX

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 绥江县| 涞源县| 霸州市| 克什克腾旗| 大方县| 同德县| 聂荣县| 丽江市| 孟村| 若羌县| 沁水县| 仙居县| 明光市| 正安县| 绵竹市| 即墨市| 奉化市| 津南区| 马山县| 静乐县| 思茅市| 区。| 芜湖市| 定远县| 白玉县| 河北省| 会宁县| 扬州市| 上高县| 淮滨县| 大冶市| 连江县| 镇原县| 南陵县| 乌海市| 武山县| 龙井市| 石门县| 永仁县| 林西县| 昔阳县|