零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 转场
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 函数
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GLSL 编程
一.前言
在 Windows OPenGL 使用 WGL,在 Windows OPenGL ES 使用 EGL
OpenGL (ES)版本检测可以通过 GL_VERSION
获取,值得注意的是:在获取 OpenGL (ES)版本 时,OPENGL 上下文已经创建成功,否则返回 NULL;
二.OpenGL 版本检测
//创建上下文
wglCreateContext(...)
//设置当前上下文
wglMakeCurrent(...)
//获取当前 OPENGL 版本
const char* versionStr = (const char*)glGetString(GL_VERSION);
printf("versionStr :%s",versionStr);
// 输出:versionStr :4.6.0 NVIDIA 512.15
通过上面输出信息可以看出,当前系统的 OPENGL 版本为 4.6,显卡是 NVIDIA;OPENGL 具有向下兼容性,意味着 OpenGL (ES)2.0 / 3.0 都可以使用;
三.OpenGL ES 版本检测
eglInitialize 可以得到系统中 EGL 版本号。了解当前的版本号在向后兼容性方面是非常有价值的。基于平台配置,软件开发可用清楚知道哪些 OpenGL ES API 可用访问,这将会为你的代码提供最大限度的可移植性。
//init EGL
if (!eglInitialize(m_display, &major, &minor)) { // major = 1 minor = 4
return -__LINE__;
}
if (minor >= 4 ) {
nGLRenderType = EGL_OPENGL_ES3_BIT_KHR;
nGLVersion = 3;
} else {
nGLRenderType = EGL_OPENGL_ES2_BIT;
nGLVersion = 2;
}
//Choose config
eglChooseConfig(...)
//Create a surface
eglCreateWindowSurface(....)
EGLint attribList[]{
EGL_CONTEXT_CLIENT_VERSION, nGLVersion,
EGL_NONE
};
// Create a GL context
m_context = eglCreateContext(m_display, config, sharedContext, attribList);
if (m_eglContext == EGL_NO_CONTEXT)
return -__LINE__;
// Make the context current
if (!eglMakeCurrent(m_eglDisplay, m_eglSurface,m_eglSurface, m_eglContext))
return -__LINE__;
//query opengl context version
int clientVersion = 0;
eglQueryContext(m_eglDisplay, m_eglContext, EGL_CONTEXT_CLIENT_VERSION, &clientVersion);
printf("EGLContext created, client version %d\n", clientVersion);
// 输出:EGLContext created, client version 3
四.检查系统是否支持GLES3.0
在文章《OpenGL ES EGL eglInitialize》中有做说明:要支持 GLES 3.0 要求 EGL 版本在 1.4 以上,如果版本低于 1.4 ,否则只能使用 OpenGL ES 2.0 API;
//init EGL
if (!eglInitialize(m_display, &major, &minor)) { // major = 1 minor = 4
return -__LINE__;
}
minor >= 4 支持 GLES 3.0
minor < 4 支持 GLES 2.0
五.猜你喜欢
- OpenGL ES 简介
- OpenGL ES 版本介绍
- OpenGL ES 2.0 和 3.0区别
- OpenGL ES 名词解释(一)
- OpenGL ES 名词解释(二)
- OpenGL ES GLSL 着色器使用过程
- OpenGL ES EGL 简介
- OpenGL ES EGL 名词解释
- OpenGL ES EGL eglGetDisplay
- OpenGL ES EGL eglInitialize
- OpenGL ES EGL eglGetConfigs
- OpenGL ES EGL eglChooseConfig
- OpenGL ES EGL eglGetError
- OpenGL ES EGL eglCreateContext
- OpenGL ES EGL eglCreateWindowSurface
- OpenGL ES EGL eglCreatePbufferSurface
- OpenGL ES EGL eglMakeCurrent
- OpenGL ES EGL eglSwapBuffer
- OpenGL ES EGL eglDestroySurface
- OpenGL ES EGL eglDestroyContext
- OpenGL ES EGL eglQueryContext
- OpenGL ES EAGLContext 和 EGLContext
- OpenGL ES OpenGL WebGL EGL WGL 区别
- OpenGL ES freeglut 下载和使用
- OpenGL ES glew 下载和使用
- OpenGL ES glut 下载和使用
- OpenGL ES glfw 下载和使用
- OpenGL ES glad 下载和使用
- OpenGL ES glut glew glfw glad freeglut
- OpenGL ES google angle
- OpenGL Windows 搭建环境(MFC版本)
- OpenGL ES Windows 搭建环境(MFC版本)
- OpenGL ES 版本检测
ChatGPT 3.5 国内中文镜像站免费使用啦
暂无评论内容