一個極好的OpenGL漢字顯示類
GLuint PixelFormat; // 儲存查詢匹配的結果
WNDCLASS wc; // 視窗類結構
DWORD dwExStyle; // 擴充套件視窗風格
DWORD dwStyle; // 視窗風格
RECT WindowRect; // 取得矩形的左上角和右下角的座標值
WindowRect.left=(long)0; // 將Left 設為 0
WindowRect.right=(long)width; // 將Right 設為要求的寬度
WindowRect.top=(long)0; // 將Top 設為 0
WindowRect.bottom=(long)height; // 將Bottom 設為要求的高度
fullscreen=fullscreenflag; // 設定全域性全屏標誌
hInstance = GetModuleHandle(NULL); // 取得我們視窗的例項
wc.style
wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc處理訊息
wc.cbClsExtra =0; // 無額外視窗資料
wc.cbWndExtra =0; // 無額外視窗資料
wc.hInstance
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // 裝入預設圖示
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // 裝入滑鼠指標
wc.hbrBackground = NULL; // GL不需要背景
wc.lpszMenuName = NULL; // 不需要選單
wc.lpszClassName ="OpenG"; // 設定類名字
if (!RegisterClass(&wc)) // 嘗試註冊視窗類
{
MessageBox(NULL,"註冊視窗失敗","錯誤",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 退出並返回FALSE
}
if (fullscreen) // 要嘗試全屏模式嗎?
{
DEVMODE dmScreenSettings; // 裝置模式
memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // 確保記憶體清空為零
dmScreenSettings.dmSize=sizeof(dmScreenSettings); // Devmode 結構的大小
dmScreenSettings.dmPelsWidth = width; // 所選螢幕寬度
dmScreenSettings.dmPelsHeight = height; // 所選螢幕高度
dmScreenSettings.dmBitsPerPel = bits; // 每象素所選的色彩深度
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
// 嘗試設定顯示模式並返回結果。注: CDS_FULLSCREEN 移去了狀態條
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
// 若模式失敗,提供兩個選項:退出或在視窗內執行。
if (MessageBox(NULL,"全屏模式在當前顯示卡上設定失敗!使用視窗模式?","NeHe G",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
{
//如果使用者選擇視窗模式,變數fullscreen 的值變為FALSE,程式繼續執行
fullscreen=FALSE; // 選擇視窗模式(Fullscreen=FALSE)
}
else
{
//如果使用者選擇退出,彈出訊息視窗告知使用者程式將結束。並返回FALSE告訴程式視窗未能成功建立。程式退出。
MessageBox(NULL,"程式將被關閉","錯誤",MB_OK|MB_ICONSTOP);
return FALSE; // 退出並返回 FALSE
}
}
}
if (fullscreen) // 仍處於全屏模式嗎?
{
dwExStyle=WS_EX_APPWINDOW; // 擴充套件窗體風格
dwStyle=WS_POPUP; // 窗體風格
ShowCursor(FALSE); // 隱藏滑鼠指標
}
else
{
dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // 擴充套件窗體風格
dwStyle=WS_OVERLAPPEDWINDOW; // 窗體風格
}
AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); // 調整視窗達到真正要求的大小
// 建立視窗
if (!(hWnd=CreateWindowEx( dwExStyle, // 擴充套件窗體風格
"OpenG", // 類名字
title, // 視窗標題
dwStyle |// 必須的窗體風格屬性
WS_CLIPSIBLINGS |// 必須的窗體風格屬性
WS_CLIPCHILDREN, // 必須的窗體風格屬性
0, 0, // 視窗位置
WindowRect.right-WindowRect.left, // 計算調整好的視窗寬度
WindowRect.bottom-WindowRect.top, // 計算調整好的視窗高度
NULL, // 無父視窗
NULL, // 無選單
hInstance, // 例項
NULL))) // 不向WM_CREATE傳遞任何東東
{
KillGLWindow(); // 重置顯示區
MessageBox(NULL,"視窗建立錯誤","錯誤",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
static PIXELFORMATDESCRIPTOR pfd=//pfd 告訴視窗我們所希望的東東,即視窗使用的畫素格式
{
sizeof(PIXELFORMATDESCRIPTOR), // 上述格式描述符的大小
1, // 版本號
PFD_DRAW_TO_WINDOW |// 格式支援視窗
PFD_SUPPORT_OPENGL |// 格式必須支援OpenGL
PFD_DOUBLEBUFFER, // 必須支援雙緩衝
PFD_TYPE_RGBA, // 申請 RGBA 格式
bits, // 選定色彩深度
0, 0, 0, 0, 0, 0, // 忽略的色彩位
0, // 無Alpha快取
0, // 忽略Shift Bit
0, // 無累加快取
0, 0, 0, 0, // 忽略聚集位
16, // 16位 Z-快取 (深度快取)
0, // 無蒙板快取
0, // 無輔助快取
PFD_MAIN_PLANE, // 主繪圖層
0, // 不使用重疊層
0, 0, 0// 忽略層遮罩
};
if (!(hDC=GetDC(hWnd))) // 取得裝置描述表了麼?
{
KillGLWindow(); // 重置顯示區
MessageBox(NULL,"不能建立一個視窗裝置描述表","錯誤",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) // Windows 找到相應的象素格式了嗎?
{
KillGLWindow(); // 重置顯示區
相關推薦
一個極好的OpenGL漢字顯示類
{ GLuint PixelFormat; // 儲存查詢匹配的結果 WNDCLASS wc; // 視窗類結構 DWORD dwExStyle; // 擴充套
一個極好的GitHub開源Python專案: What the f*ck Python! snake
Python, being a beautifully designed high-level and interpreter-based programming language, provides us with many features for the programmer's comf
ABAP--一個極好的呼叫外部java程式的Search Help Exit的例項(RFC好例子)
Connecting to an external source via Java Connector (By Bob Billings) In the process of SAP Order Entry (VA01) it became necess
一個封裝好的執行緒類
原文出處 class CThread { public: /**//** * Default Constructor */ CThread() {
PyCrypto —— 一個極好的資訊保安python庫
我在【win7作業系統 + 32位機器】上裝python2.7 和PyCrypto(也有64位的版本),用這個輔助學習,感覺挺方便的。 其他引用來源: Installing PyCrypto On Windows (Or How To Build Instal
分享一個特別好的測試http協議的測試工具類
二話不說,咱直接上程式碼!!!! public class TestPost { private static final SimpleDateFormat format = new SimpleDateFormat("y
為大家提供一個好的時間工具類DateTime
此類的靈感來源於C# 雖然網上有什麼date4j,但是jar太糾結了,先給出原始碼,可以繼承到自己的util包中,作為一個資深程式設計師,我相信都有不少好的util工具類,我也希望經過此次分享,能帶動技術大牛們能分享出自己的好用的工具類。 先看原始碼 /* * 岸思科技
.NET:一個非常好用的SQL資料庫處理類
using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Runtime.Re
一個封裝好的使用完成埠的socket通訊類
//*********************************************************************************** //檔案說明:TSocket.h //功能: 檔案傳輸客戶端實現標頭檔案 //使用說明:使用TCP的I
自定義一個更好用的SwipeRefreshLayout(彈力拉伸效果詳解)(轉載)
dsc drag 常數 lane swipe loading 數據改變 高中數學 tca 轉自: 自定義一個更好用的SwipeRefreshLayout(彈力拉伸效果詳解) 前言 熟悉SwipeRefreshLayout的同學一定知道,SwipeRefreshLayout是
問題:combo只顯示一個選項,其他不顯示(調整框的高度即可。)
== .com idc 普通 內容 重新 運行 padding href 解決辦法:調整框的高度即可。 轉自:http://blog.163.com/strive_only/blog/static/89380168200971010114665/ 雖然我也是用了好一段VC的
窗體顯示類
mes tracking 變量 內存 raw win32 void gets mds 窗體在前面已經註冊。而且已經創建出來了,但這時這個窗體並不能出如今我們的眼前,又是什麽原因呢?哦,還不顯示出來,原來是有原因的,就是窗體有多種狀態。窗體能夠隱藏、普通顯示、最大化顯示、最
用C++設計一個不能被繼承的類(轉)
它的 設計 指定 基於 構造 重寫 rtu 構造函數、析構函數 析構函數 在Java 中定義了關鍵字final,被final修飾的類不能被繼承。 首先想到的是在C++中,子類的構造函數會自動調用父類的構造函數。同樣,子類的析構函數也會自動調用父類的析構函數。要想一個類不能
將一個字符串(string類型)轉換成一個int類型
string_to_inint CommString::str_to_int(const std::string &str){ int ivalue = 0; sscanf(str.c_str(), "%d", &ivalue); return ivalue;}本文出自 “簡單可
C#之隱式與顯示類型轉換
console program double 64位 大於 編譯器 line 成功 定義 今天在看一篇有關數據類型的文章的時候,無意間看到了兩個關鍵詞,“隱式轉換”與“顯示轉換”,然後突然想起了當初開始學編程的時候,也總是在代碼編譯的時候遇到這樣的問題。 那麽,今天剛好有空
搜藏一個php文件上傳類
cti fault bre 單元素 出錯 構造 php文件 tmp log <?php /** * 上傳文件類 * @param _path : 服務器文件存放路徑 * @param _allowType : 允許上傳的文件類型和所對應的MIME * @pa
gcc和MinGW的異同(在cygwin/gcc做的東西可以無縫的用在linux下,沒有任何問題,是在windows下開發linux程序的一個很好的選擇)
實現 o-c tool 交叉 lin 分析 模擬 gcc編譯器 還要 cygwin/gcc和MinGW都是gcc在windows下的編譯環境,但是它們有什麽區別,在實際工作中如何選擇這兩種編譯器。 cygwin/gcc完全可以和在linux下的gcc化做等號,這個可以從bo
git學習之---如何把一個寫好的項目傳到GitHub上
ide 如果 根目錄 裏的 keygen settings comm onf master 一、首先生成本地的ssh key 在命令窗口執行以下命令 ssh-keygen -t rsa -C "[email protected]" 執行後會提示你ssh key
建立一個漂亮的PHP驗證碼類文件及調用方式
去掉 -1 cti elephant orm random 上一個 ott 狀態 //驗證碼類class ValidateCode { private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345678
Python--33 像一個極客去思考
similar ecif baseline style 一個 trying arguments between mman Python自帶電池 電池:Python標準庫 PyThon標準庫中包含一般任務所需要的模塊 Python documentation ti