資源簡介
這是我早些時候編的小游戲,使用了OPENGL來畫圖,源代碼里面還有拼音做函數名的,不好意思。但可以拿來大概學習下OPENGL在單文檔視圖的MFC中的使用。

代碼片段和文件信息
//?GLFont.cpp:?implementation?of?the?CGLFont?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“GLFont.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//unsigned?int?base;
//////////////////////////////////////////////////////////////////////
CGLFont::CGLFont()
{
}
CGLFont::~CGLFont()
{
}
void?CGLFont::entext(?float?xfloat?y?LPCTSTR?str?HFONT?hFont
??float?r?float?g?float?b)?//平面字符顯示,不支持漢字。
{? HDC?hdc?=?wglGetCurrentDC();????????//獲取設置場景
Selectobject(hdc?hFont);???????????//設置字體
unsigned?int?base?=?glGenLists(96);?//創建大小為96顯示列表存放字符位圖
wglUseFontBitmaps(hdc?32?96base);//創建位圖字體
glDisable(GL_TEXTURE_2D);???????????//不使用貼圖
glDisable(GL_LIGHTING);?????????????//不使用光照
glPushAttrib(GL_LIST_BIT);??????????//保存顯示列表位屬性
glColor3f(rgb);???????????????????//顏色
glRasterPos2f(x/100?y/100);????????//平面定位
glListbase(base?-?32);??????????//從顯示列表開始
glCallLists(strlen(str)?GL_UNSIGNED_BYTE?str);?//繪制顯示列表
glPopAttrib();??????????????????????//恢復顯示列表屬性
glEnable(GL_LIGHTING);??????????????//使用貼圖
glEnable(GL_TEXTURE_2D);????????????//使用光照
glDeleteLists(base?96);????????????//刪除顯示列表
}
//////////////////////////////////////////////////////////////////
void?CGLFont::c3dtext(LPCTSTR?strHFONT?hFontfloat?z)//?3D文字顯示支持漢字。
{ glDisable(GL_TEXTURE_2D);?????//?關閉貼圖
glDisable(GL_LIGHTING);???????//?關閉光照
Printfc3d(“立體漢字“hFontz);//?調用3D文字顯示
glEnable(GL_LIGHTING);????????//?使用光照
glEnable(GL_TEXTURE_2D);??????//?使用貼圖
}
void?CGLFont::Printfc3d(CString?strTextHFONT?hFontfloat?z)
{ HDC?hdc?=?wglGetCurrentDC();?//設備場景
HFONT?hOldFont=(HFONT)::Selectobject(hdchFont);//將字體選入場景
UCHAR?*?pChar=(UCHAR*)strText.GetBuffer(strText.GetLength());//定義字符串長度
int???nListNum;?????????????????????????????????//顯示列表
DWORD?dwChar;???????????????????????????????????//字符指針
GLYPHMETRICSFLOAT?pgmf[1];??????????????????????//輪廓字體字符集的信息
glPushMatrix();?????????????????????????????????//壓入堆棧
for(int?i?=?0;?i? {?if(IsDBCSLeadByte((BYTE)pChar[i]))????????????//是否雙字節(漢字)
{?dwChar=(DWORD)((pChar[i]<<8)|pChar[i+1]);?//取當前字符,雙字節轉換
??i++;
}
??else dwChar?=?pChar[i];??????????????????????//取當前字符
??nListNum?=?glGenLists(1);?????????????????????//創建列表
??wglUseFontOutlines(?hdc //擁有字體的HDC
??dwChar //轉化為顯示列表的第一個字符
??1 //轉化為顯示列表的字符數
??nListNum //顯示列表的開始
??0.0f?
??z //Z軸負方向的厚度
??WGL_FONT_POLYGONS //繪制字體方式
??pgmf //指向存放信息的數組為count個
);
??glCallList(nListNum);?????????????????????????//繪制顯示列表
??glDeleteLists(nListNum?1);???????????????????//刪除列表
}
glPopMatrix();??????????????????????????????????//彈出堆棧
strText.ReleaseBuffer();????????????????????????//清除字符串
::Selectobject(hdchOldFont);??????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1572918??2008-08-17?09:32??老何開發(炸飛機)\1014-1.jpg
?????文件?????393270??2008-08-17?09:32??老何開發(炸飛機)\1014-2.jpg
?????文件????1572918??2008-08-20?09:44??老何開發(炸飛機)\1028-1.jpg
?????文件????1572918??2008-08-20?11:43??老何開發(炸飛機)\1076-1.jpg
?????文件?????196662??2008-08-17?18:28??老何開發(炸飛機)\1425-1.jpg
?????文件?????196662??2008-08-20?09:44??老何開發(炸飛機)\1448-1.jpg
?????文件?????196662??2008-08-20?11:43??老何開發(炸飛機)\1485-1.jpg
?????文件??????19690??2009-11-24?21:53??老何開發(炸飛機)\3DS.CPP
?????文件???????3851??2005-04-17?18:15??老何開發(炸飛機)\3DS.H
?????文件??????71471??2010-05-19?14:37??老何開發(炸飛機)\Debug\3DS.obj
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\3DS.sbr
?????文件??????19567??2010-05-19?14:37??老何開發(炸飛機)\Debug\GLFont.obj
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\GLFont.sbr
?????文件??????19338??2010-05-19?14:37??老何開發(炸飛機)\Debug\MainFrm.obj
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\MainFrm.sbr
?????文件??????47024??2010-05-19?14:37??老何開發(炸飛機)\Debug\mscomm.obj
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\mscomm.sbr
?????文件????4023296??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGL.bsc
?????文件????2330691??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGL.exe
?????文件????2848048??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGL.ilk
?????文件??????26148??2010-05-19?14:37??老何開發(炸飛機)\Debug\SDOpenGL.obj
?????文件????7100476??2010-05-19?14:37??老何開發(炸飛機)\Debug\SDOpenGL.pch
?????文件????4514816??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGL.pdb
?????文件??????16104??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGL.res
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\SDOpenGL.sbr
?????文件??????13671??2010-05-19?14:37??老何開發(炸飛機)\Debug\SDOpenGLDoc.obj
?????文件??????????0??2010-05-19?14:37??老何開發(炸飛機)\Debug\SDOpenGLDoc.sbr
?????文件??????64948??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGLView.obj
?????文件??????????0??2010-10-09?19:45??老何開發(炸飛機)\Debug\SDOpenGLView.sbr
?????文件?????107254??2010-05-19?14:37??老何開發(炸飛機)\Debug\StdAfx.obj
............此處省略50個文件信息
- 上一篇:哈夫曼樹MFC
- 下一篇:VC計算器,完整的案例,適合MFC和VC++初學者
評論
共有 條評論