最近在学OpenGL,不想使用OpenGL的GLUT工具,自己写了一个初始化OpenGL的类,并在win32中使用,每次都要新建一个win32项目,然后将OpenGL初始化类拷贝到项目,然后进行各种初始化,通过自定义向导,我们可以很方便解决这个问题。
一、新建win32项目。
二、将OpenGL初始化类CUseOpenGL源文件和头文件拷贝到当前工程目录下。
UseOpenGL.h文件内容
#ifndef _USE_OPENGL_H_
#define _USE_OPENGL_H_
#include <Windows.h>
#include <gl/GL.h>
#include <gl/GLU.h>
class CUseOpenGL
{
public:
CUseOpenGL();
~CUseOpenGL();
public:
bool SetWindowPixelFormat(HDC hDC);
bool CreateViewGLContext(HDC hDC);
void DestoryGLContext();
virtual void ResizeGLView(int width, int height);
private:
int m_nGLPixelIndex;
HGLRC m_hGLContext;
};
#endif
UseOpenGL.cpp文件内容
三、将UseOpenGL.h和UseOpenGL.cpp文件添加到现有工程
四、使用OpenGL,在Win32OpenGL.cpp中加入以下代码
运行,如下图所示:
五、创建自定义向导
六、将Win32OpenGL下的.h/.ico/.cpp/.rc文件拷贝到Win32OpenGLWizard项目下的\Templates\2052目录,并添加到项目
模板文件上添加现有项
七、打开Templates.inf文件,将拷贝的文件名添加进去
readme.txt Resource.h small.ico stdafx.cpp stdafx.h targetver.h UseOpenGL.cpp UseOpenGL.h Win32OpenGL.cpp Win32OpenGL.h Win32OpenGL.ico Win32OpenGL.rc
八、打开default.js文件,进行修改
function AddFilters(proj) { try { // 将文件夹添加到项目 // var strSrcFilter = wizard.FindSymbol('SOURCE_FILTER'); // var group = proj.Object.AddFilter('Source Files'); // group.Filter = strSrcFilter; proj.Object.AddFilter('源文件').Filter = 'cpp;c'; proj.Object.AddFilter('头文件').Filter = 'hpp;h'; proj.Object.AddFilter('资源文件').Filter = 'ico;rc;bin'; } catch(e) { throw e; } } function GetTargetName(strName, strProjectName) { try { // TODO: 基于模板文件名设置呈现文件的名称 var strTarget = strName; if (strName == 'readme.txt') strTarget = 'ReadMe.txt'; if (strName == 'sample.txt') strTarget = 'Sample.txt'; if (strName == 'Win32OpenGL.cpp') strTarget = strProjectName + '.cpp'; if (strName == 'Win32OpenGL.h') strTarget = strProjectName + '.h'; if (strName == 'Win32OpenGL.ico') strTarget = strProjectName + '.ico'; if (strName == 'Win32OpenGL.rc') strTarget = strProjectName + '.rc'; return strTarget; } catch(e) { throw e; } }
九、将所有老的项目修改为新的项目名打开Win32OpenGL.cpp文件
1、将#include "Win32OpenGL.h"修改为
#include "[!output PROJECT_NAME].h"
打开Win32OpenGL.rc文件
2、将IDI_WIN32OPENGL ICON "Win32OpenGL.ico"修改为
IDI_WIN32OPENGL ICON "[!output PROJECT_NAME].ico"
3、将CAPTION "关于 Win32OpenGL"修改为
CAPTION "关于 [!output PROJECT_NAME]"
4、将 LTEXT "Win32OpenGL,1.0 版",IDC_STATIC,42,14,114,8,SS_NOPREFIX修改为
LTEXT "[!output PROJECT_NAME],1.0 版",IDC_STATIC,42,14,114,8,SS_NOPREFIX
5、将IDC_WIN32OPENGL "WIN32OPENGL"修改为
IDC_WIN32OPENGL "[!output PROJECT_NAME]"
6、将IDS_APP_TITLE "Win32OpenGL"修改为
IDS_APP_TITLE "[!output PROJECT_NAME]"
十、此时向导已经完成。
打开VS2010,新建项目,向导,Win32OpenGLWizard
我们可以看到Win32OpenGLWizard向导是在"向导"这个子项下,并且向导的说明也是默认的,我们可以修改向导的说明并且可以将Win32OpenGLWizard向导放在"Win32"子项下。
打开"我的文档",定位到“Documents\Visual Studio 2010\Wizards”目录,里面有三个文件Win32OpenGLWizard.ico、Win32OpenGLWizard.vsdir、Win32OpenGLWizard.vsz,如果将这三个文件删除后,那么Win32OpenGLWizard便会自动从向导中移除,现在我们将这三个文件移动到VS2010安装目录下的\Microsoft Visual Studio 10.0\VC\vcprojects目录,打开Win32OpenGLWizard.vsdir文件,将内容\Microsoft Visual Studio 10.0\VC\vcprojects\Win32目录下的win32.vsdir文件的末尾,内容如下
..\Win32Wiz.vsz|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|#1171|1|#1172|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|0|4096|#1154 ..\Win32Console.vsz|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|#1204|1|#1205|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|0|4096|#1154 ..\Win32OpenGLWizard.vsz| |Win32OpenGLWizard|1|Win32 OpenGL 项目| |6777| |Win32OpenGLWizard其中"Win32 OpenGL 项目"便是Win32OpenGLWizard向导的说明
打开Win32OpenGLWizard.vsz文件
VSWIZARD 7.0 Wizard=VsWizard.VsWizardEngine.10.0 Param="WIZARD_NAME = Win32OpenGLWizard" Param="ABSOLUTE_PATH = E:\桌面\Custom\example\Win32OpenGLWizard\Win32OpenGLWizard" Param="FALLBACK_LCID = 2052" Param="WIZARD_UI = FALSE" Param="SOURCE_FILTER = txt""ABSOLUTE_PATH = E:\桌面\Custom\example\Win32OpenGLWizard\Win32OpenGLWizard"是向导文件的位置,即第五步创建自定义向导的位置,这个路径下的文件不能被删除,否则向导不能新建项目。
参考:http://www.rupeng.com/forum/thread-9243-1-1-uid54410.html