1. VS2013工程設(shè)置
VS在編譯代碼時戈咳,中間文件會默認(rèn)保存在當(dāng)前工程的Debug/Release目錄下面,這對我們拷貝代碼壕吹,提交git比較不利著蛙,因?yàn)槲覀儧]有必要將中間文件也上傳到遠(yuǎn)程倉庫。比較優(yōu)雅的一種做法是耳贬,將工程的中間文件生成目錄設(shè)置到源代碼根目錄的上一級目錄中去踏堡。
-
選擇所有配置,這會同時修改Debug/Release
修改配置 -
修改輸出目錄和中間目錄為../../temp/$(ConfigurationName)/$(ProjectName)
2.PNG -
選擇鏈接器效拭,修改輸出文件為../../bin/$(Configuration)/$(ProjectName).exe
修改生成二進(jìn)制文件路徑 -
選擇調(diào)試暂吉,修改命令為../../bin/$(Configuration)/$(ProjectName).exe,如果不修改缎患,運(yùn)行的時候VS2013會提示找不到應(yīng)用程序慕的。
修改生成二進(jìn)制文件路徑
引入OpenGLES2.0庫文件
-
設(shè)置頭文件目錄
5.PNG -
設(shè)置鏈接庫文件目錄,用于提示VS2013尋找導(dǎo)入庫文件
6.PNG -
設(shè)置鏈接導(dǎo)入庫
設(shè)置導(dǎo)入庫
設(shè)置完之后挤渔,需要將DLL文件放入到生成可執(zhí)行文件所在目錄肮街,即可運(yùn)行時鏈接到OpenGL動態(tài)庫。
3 初始化OpenGL
bool CellWinApp::initOpenGLES20()
{
const EGLint attribs[] =
{
EGL_SURFACE_TYPE, EGL_WINDOW_BIT, // 表面類型
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_DEPTH_SIZE, 24, // 深度
EGL_NONE
};
EGLint format(0);
EGLint numConfigs(0);
EGLint major;
EGLint minor;
_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(_display, &major, &minor);
eglChooseConfig(_display, attribs, &_config, 1, &numConfigs);
eglGetConfigAttrib(_display, _config, EGL_NATIVE_VISUAL_ID, &format);
_surface = eglCreateWindowSurface(_display, _config, _hWnd, NULL);
EGLint attr[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE, EGL_NONE};
_context = eglCreateContext(_display, _config, 0, attr);
if (eglMakeCurrent(_display, _surface, _surface, _context) == EGL_FALSE)
{
return false;
}
eglQuerySurface(_display, _surface, EGL_WIDTH, &_width);
eglQuerySurface(_display, _surface, EGL_HEIGHT, &_height);
return true;
}
4. 銷毀上下文
void CellWinApp::destroyOpenGLES20()
{
if (_display != EGL_NO_DISPLAY)
{
eglMakeCurrent(_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
if (_context != EGL_NO_CONTEXT)
{
eglDestroyContext(_display, _context);
}
if (_surface != EGL_NO_SURFACE)
{
eglDestroySurface(_display, _surface);
}
eglTerminate(_display);
}
_display = EGL_NO_DISPLAY;
_context = EGL_NO_CONTEXT;
_surface = EGL_NO_SURFACE;
}