资源简介

这是我早些时候编的小游戏,使用了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 < 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  老何开发(炸飞机)\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个文件信息

评论

共有 条评论