这是我早些时候编的小游戏,使用了OPENGL来画图,源代码里面还有拼音做函数名的,不好意思。但可以拿来大概学习下OPENGL在单文档视图的MFC中的使用。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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 老何开发(炸飞机)Debug3DS.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)Debug3DS.sbr
文件 19567 2010-05-19 14:37 老何开发(炸飞机)DebugGLFont.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugGLFont.sbr
文件 19338 2010-05-19 14:37 老何开发(炸飞机)DebugMainFrm.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugMainFrm.sbr
文件 47024 2010-05-19 14:37 老何开发(炸飞机)Debugmscomm.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)Debugmscomm.sbr
文件 4023296 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.bsc
文件 2330691 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.exe
文件 2848048 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.ilk
文件 26148 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.obj
文件 7100476 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.pch
文件 4514816 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.pdb
文件 16104 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.res
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.sbr
文件 13671 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGLDoc.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGLDoc.sbr
文件 64948 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGLView.obj
文件 0 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGLView.sbr
文件 107254 2010-05-19 14:37 老何开发(炸飞机)DebugStdAfx.obj
............此处省略50个文件信息
// 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 < strText.GetLength(); 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 老何开发(炸飞机)Debug3DS.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)Debug3DS.sbr
文件 19567 2010-05-19 14:37 老何开发(炸飞机)DebugGLFont.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugGLFont.sbr
文件 19338 2010-05-19 14:37 老何开发(炸飞机)DebugMainFrm.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugMainFrm.sbr
文件 47024 2010-05-19 14:37 老何开发(炸飞机)Debugmscomm.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)Debugmscomm.sbr
文件 4023296 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.bsc
文件 2330691 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.exe
文件 2848048 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.ilk
文件 26148 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.obj
文件 7100476 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.pch
文件 4514816 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.pdb
文件 16104 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGL.res
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGL.sbr
文件 13671 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGLDoc.obj
文件 0 2010-05-19 14:37 老何开发(炸飞机)DebugSDOpenGLDoc.sbr
文件 64948 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGLView.obj
文件 0 2010-10-09 19:45 老何开发(炸飞机)DebugSDOpenGLView.sbr
文件 107254 2010-05-19 14:37 老何开发(炸飞机)DebugStdAfx.obj
............此处省略50个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)