用Visual C++实现OpenGL程序设计
来源:互联网 发布:名片制作软件免费下载 编辑:程序博客网 时间:2024/06/06 13:56
开发了一个基于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格式的纹理文件;
正文
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格式的纹理文件;
- 用Visual C++实现OpenGL程序设计
- 用Visual C++ 6实现OpenGL编程
- 用Visual C++ 5实现OpenGL编程
- 用Visual C++ 6实现OpenGL编程
- C++-程序设计实现
- 用Visual C++.NET实现XML解析
- 用Visual C#实现局域网点对点通讯
- 用Visual C#实现局域网点对点通讯
- 用Visual C#实现局域网点对点通讯
- 用Visual C#实现局域网点对点通讯
- 用Visual C#实现局域网点对点通讯
- 用Visual C#实现局域网点对点通讯
- OpenGL+实现延迟(C++)
- C程序设计P265程序实现
- Visual C++DLL编程实现
- Visual C++DLL编程实现
- 用C语言实现病毒源码与解毒程序设计
- 用C语言实现面向对象程序设计(一)
- 经验之谈一:关于Try Catch
- 在Visual C++资源文件中加入声音资源
- mvnforum论坛中的管理功能中的一个BUG:
- AjaxControlToolKit工具包介绍和安装
- Javascript中最常用的55个经典技巧
- 用Visual C++实现OpenGL程序设计
- E文积累_20070814
- 从HTML文件中抽取正文的简单方案
- Ruby相关的一些资源
- 利用IP安全策略禁止別人PING你
- ajax开学简略(学习笔记)
- TeeChart控件的应用
- 正则表达式学习(转载)
- 赠与今年的大学毕业生(1932年6月27日)