資源簡介
這是我早些時(shí)候編的小游戲,使用了OPENGL來畫圖,源代碼里面還有拼音做函數(shù)名的,不好意思。但可以拿來大概學(xué)習(xí)下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();????????//獲取設(shè)置場景
Selectobject(hdc?hFont);???????????//設(shè)置字體
unsigned?int?base?=?glGenLists(96);?//創(chuàng)建大小為96顯示列表存放字符位圖
wglUseFontBitmaps(hdc?32?96base);//創(chuàng)建位圖字體
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();??????????????????????//恢復(fù)顯示列表屬性
glEnable(GL_LIGHTING);??????????????//使用貼圖
glEnable(GL_TEXTURE_2D);????????????//使用光照
glDeleteLists(base?96);????????????//刪除顯示列表
}
//////////////////////////////////////////////////////////////////
void?CGLFont::c3dtext(LPCTSTR?strHFONT?hFontfloat?z)//?3D文字顯示支持漢字。
{ glDisable(GL_TEXTURE_2D);?????//?關(guān)閉貼圖
glDisable(GL_LIGHTING);???????//?關(guān)閉光照
Printfc3d(“立體漢字“hFontz);//?調(diào)用3D文字顯示
glEnable(GL_LIGHTING);????????//?使用光照
glEnable(GL_TEXTURE_2D);??????//?使用貼圖
}
void?CGLFont::Printfc3d(CString?strTextHFONT?hFontfloat?z)
{ HDC?hdc?=?wglGetCurrentDC();?//設(shè)備場景
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]))????????????//是否雙字節(jié)(漢字)
{?dwChar=(DWORD)((pChar[i]<<8)|pChar[i+1]);?//取當(dāng)前字符,雙字節(jié)轉(zhuǎn)換
??i++;
}
??else dwChar?=?pChar[i];??????????????????????//取當(dāng)前字符
??nListNum?=?glGenLists(1);?????????????????????//創(chuàng)建列表
??wglUseFontOutlines(?hdc //擁有字體的HDC
??dwChar //轉(zhuǎn)化為顯示列表的第一個(gè)字符
??1 //轉(zhuǎn)化為顯示列表的字符數(shù)
??nListNum //顯示列表的開始
??0.0f?
??z //Z軸負(fù)方向的厚度
??WGL_FONT_POLYGONS //繪制字體方式
??pgmf //指向存放信息的數(shù)組為count個(gè)
);
??glCallList(nListNum);?????????????????????????//繪制顯示列表
??glDeleteLists(nListNum?1);???????????????????//刪除列表
}
glPopMatrix();??????????????????????????????????//彈出堆棧
strText.ReleaseBuffer();????????????????????????//清除字符串
::Selectobject(hdchOldFont);??????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????1572918??2008-08-17?09:32??老何開發(fā)(炸飛機(jī))\1014-1.jpg
?????文件?????393270??2008-08-17?09:32??老何開發(fā)(炸飛機(jī))\1014-2.jpg
?????文件????1572918??2008-08-20?09:44??老何開發(fā)(炸飛機(jī))\1028-1.jpg
?????文件????1572918??2008-08-20?11:43??老何開發(fā)(炸飛機(jī))\1076-1.jpg
?????文件?????196662??2008-08-17?18:28??老何開發(fā)(炸飛機(jī))\1425-1.jpg
?????文件?????196662??2008-08-20?09:44??老何開發(fā)(炸飛機(jī))\1448-1.jpg
?????文件?????196662??2008-08-20?11:43??老何開發(fā)(炸飛機(jī))\1485-1.jpg
?????文件??????19690??2009-11-24?21:53??老何開發(fā)(炸飛機(jī))\3DS.CPP
?????文件???????3851??2005-04-17?18:15??老何開發(fā)(炸飛機(jī))\3DS.H
?????文件??????71471??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\3DS.obj
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\3DS.sbr
?????文件??????19567??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\GLFont.obj
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\GLFont.sbr
?????文件??????19338??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\MainFrm.obj
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\MainFrm.sbr
?????文件??????47024??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\mscomm.obj
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\mscomm.sbr
?????文件????4023296??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.bsc
?????文件????2330691??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.exe
?????文件????2848048??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.ilk
?????文件??????26148??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.obj
?????文件????7100476??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.pch
?????文件????4514816??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.pdb
?????文件??????16104??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.res
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGL.sbr
?????文件??????13671??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGLDoc.obj
?????文件??????????0??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGLDoc.sbr
?????文件??????64948??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGLView.obj
?????文件??????????0??2010-10-09?19:45??老何開發(fā)(炸飛機(jī))\Debug\SDOpenGLView.sbr
?????文件?????107254??2010-05-19?14:37??老何開發(fā)(炸飛機(jī))\Debug\StdAfx.obj
............此處省略50個(gè)文件信息
評論
共有 條評論