博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用GLEW在win环境下创建支持高版本OpenGL 上下文
阅读量:6656 次
发布时间:2019-06-25

本文共 2234 字,大约阅读时间需要 7 分钟。

  hot3.png

BOOL Cgl::CreateMultiSample(HWND hwnd, BOOL bCreateZBuffer)/*by ZhouZhuo 2014.06.23 凹凸纹理 启动多采样抗锯齿 */{	m_hWnd =hwnd; //this->m_hWnd;	m_hDC = ::GetDC(hwnd);	DWORD depth_flag = PFD_DEPTH_DONTCARE;	PIXELFORMATDESCRIPTOR pfd;	if (bCreateZBuffer) depth_flag = 0;  //PFD_MAIN_PLANE	memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));	pfd.nSize  = sizeof(PIXELFORMATDESCRIPTOR);	pfd.nVersion   = 1;	pfd.dwFlags    = PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_SWAP_EXCHANGE | depth_flag;	pfd.iPixelType = PFD_TYPE_RGBA;	pfd.cColorBits = (BYTE)GetDeviceCaps(m_hDC, BITSPIXEL);	pfd.cDepthBits = 24;//这里大多数机器只支持24	pfd.iLayerType = PFD_MAIN_PLANE;		int nPixelFormat = ChoosePixelFormat(m_hDC, &pfd);	if (nPixelFormat == 0) return false;	nPixelFormat = 56 ;//采用作弊办法获得了16采样下的值,	BOOL bResult = SetPixelFormat (m_hDC, nPixelFormat, &pfd);	if (!bResult) return false; 	HGLRC tempContext = wglCreateContext(m_hDC);	wglMakeCurrent(m_hDC, tempContext);	GLenum err = glewInit();	if (GLEW_OK != err)	{		AfxMessageBox(_T("GLEW is not initialized!"));	}	int attribs[] =	{		WGL_CONTEXT_MAJOR_VERSION_ARB, 3,		WGL_CONTEXT_MINOR_VERSION_ARB, 1,		WGL_CONTEXT_FLAGS_ARB, 0,		0	};	if(wglewIsSupported("WGL_ARB_create_context") == 1)	{		m_hRC = wglCreateContextAttribsARB(m_hDC,0, attribs);		wglMakeCurrent(NULL,NULL);		wglDeleteContext(tempContext);		wglMakeCurrent(m_hDC, m_hRC);	}	else	{       //It's not possible to make a GL 3.x context. Use the old style context (GL 2.1 and before)		m_hRC = tempContext;	}	//Checking GL version	const GLubyte *GLVersionString = glGetString(GL_VERSION);	//Or better yet, use the GL3 way to get the version number	int OpenGLVersion[2];	glGetIntegerv(GL_MAJOR_VERSION, &OpenGLVersion[0]);	glGetIntegerv(GL_MINOR_VERSION, &OpenGLVersion[1]);	if (!m_hRC) return false;	glewInit();	if (glewIsSupported("GL_VERSION_4_0"))		printf("Ready for OpenGL 2.0\n");	else {		printf("OpenGL 2.0 not supported\n");		//exit(1);	}	RECT r;	::GetClientRect(hwnd, &r);	m_Width  = r.right  - r.left;	m_Height = r.bottom - r.top;	glViewport(0, 0, m_Width, m_Height);	glDrawBuffer(GL_BACK);	InitializeTexture();	wglMakeCurrent(NULL, NULL);	m_bInitialized = TRUE;	return TRUE;	return true;}

转载于:https://my.oschina.net/syhgzz/blog/283997

你可能感兴趣的文章
nginx编译安装
查看>>
详解JSP九个内置对象
查看>>
linux - RAID技术
查看>>
错误异常slice indices must be integers or None or have
查看>>
我的友情链接
查看>>
drbd+heartbeat+nfs
查看>>
下载各种视频的好方法
查看>>
python paramiko多线程批量修改主机账号密码
查看>>
ISE13.3的Virtex5和Virtex6的在综合时一些不同
查看>>
第7章 图的基本概念
查看>>
我的友情链接
查看>>
oracle常用字符串函数
查看>>
LNMP环境下nginx、php-fpm的配置文件讲解
查看>>
会声会影截取视频教程
查看>>
Outlook2013 设置 @me.com 、 @icloud.com
查看>>
MongoDB —— 使用Spring Data MongoDB操作数据库
查看>>
一文解析支持向量机(附公式)
查看>>
el-select使用方法及遇到数据回显的坑
查看>>
web应用http转https
查看>>
使用Canvas进行验证码识别
查看>>