开发了一个基于VC++6.0的对话框的OpenGL程序,它包含了所有OPENGL的学习内容,从投影,三维变换,到BERZER,BSPLINE,NURBS和一二维纹理等,非常适合初学者.有问题请发邮件mgamegame@126.com.
正文
1、新建一个基于对话框的工程,名字如OpenGLVCd;
2、将gl.h,glu.h,glut.h, opengl32.lib,glu32.lib,glut32.lib,opengl32.dll,glu32.dll,glut32.dll复制到工程目录下,将gl.h,glu.h,glut.h三个文件加入工程中;
3、"工程-设置-link",将opengl32.lib,glu32.lib,glut32.lib链接到工程中;
4、新建一个普通的类如
class COpenGLAdd{......};
5.在类的OpenGLAdd.h文件头加入
#include "gl.h";#include"glu.h"; #include"glut.h";
6.在OpenGLVCdDlg.h中加上黑体字
#include "OpenGLAdd.h"
class COpenGLAdd;
//////////////////////////////////////////
// COpenGLVCdDlg dialog
class COpenGLVCdDlg : public CDialog
{
// Construction
public:
COpenGLVCdDlg(CWnd* pParent = NULL); // standard constructor
COpenGLAdd* gg;......
7.在OpenGLVCdDlg.cpp中加上黑体字
BOOL COpenGLVCdDlg::OnInitDialog()
{
........
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
gg=new COpenGLAdd;//////////
gg->initial(this);//////////
return TRUE; // return TRUE unless you set the focus to a control
}
void COpenGLVCdDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
.......
dc.DrawIcon(x, y, m_hIcon);
}
else
{
gg->draw();///////////
CDialog::OnPaint();
}
}
COpenGLVCdDlg::OnKeyDown()//用来移动,转动,缩放景物
COpenGLVCdDlg::OnLButtonDown()//选择坐标原点
COpenGLVCdDlg::OnSize()//使OpenGl窗口适应对话框窗口
dimage文件夹中的程序用来产生128,256,512的纹理文件;
用法:
1.用图片处理软件如画图,Photoshop等编辑,尺寸必须为128X128,256X256,512X512;
另存为bmp文件格式;
2.右击Bitmap-->import导入此位图文件;
3.在文件Dimage.cpp中修改为导入的位图ID号;如IDB_BITMAP3;
void CDimageDlg::OnButton1()
{
CDC* pdc=GetDC();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP3);
BITMAP bit;
bmp.GetBitmap(&bit);
CDC bmpdc;
bmpdc.CreateCompatibleDC(pdc);
CBitmap *poldbm=bmpdc.SelectObject(&bmp);
....
运行程序,输入文件名和选择大小,然后单击"输出",产生.txt格式的纹理文件;
