windows – 如何编写检查openGL支持的安装程序?
我们有一个使用OpenGL的3D查看器,但我们的客户有时会抱怨它“不工作”.我们怀疑大多数这些问题源于他们试图在businiss笔记本电脑上使用,实际上是现代3D实时游戏.
我们如何在我们使用的windows msi安装程序中检查对openGL的支持? 作为旁注,如果你能回答“OpenGL支持的图形卡列表?”,那也很有意思.奇怪,谷歌在这里没有帮助..
取决于客户的意思是“不工作”.它可能是以下之一:
>它根本没有安装/启动,因为缺少一些OpenGL支持. 所有Windows版本(自95年起)都内置了OpenGL支持.因此,除非您的应用程序需要更高的OpenGL版本,否则不太可能导致上述情况1). 但是,默认的OpenGL实现是带有软件渲染的OpenGL 1.1.如果用户没有手动安装具有OpenGL支持的驱动程序(从NVIDIA / AMD / Intel站点下载的任何驱动程序将具有OpenGL),则他们将默认使用这种缓慢而旧的实现.这很可能导致上述情况3)和4). 即使OpenGL可用,在Windows上OpenGL驱动程序也不是很强大,温和地说.驱动程序中的各种错误很可能导致情况2),执行有效的操作会导致驱动程序崩溃. 这是一个C / WinAPI代码片段,它创建一个虚拟OpenGL上下文并检索信息(GL版本,图形卡名称,扩展等): // setup minimal required GL HWND wnd = CreateWindow( "STATIC","GL",WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,16,NULL,AfxGetInstanceHandle(),NULL ); HDC dc = GetDC( wnd ); PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL,PFD_TYPE_RGBA,32,PFD_MAIN_PLANE,0 }; int fmt = ChoosePixelFormat( dc,&pfd ); SetPixelFormat( dc,fmt,&pfd ); HGLRC rc = wglCreateContext( dc ); wglMakeCurrent( dc,rc ); // get information const char* vendor = (const char*)glGetString(GL_VENDOR); const char* renderer = (const char*)glGetString(GL_RENDERER); const char* extensions = (const char*)glGetString(GL_EXTENSIONS); const char* version = (const char*)glGetString(GL_VERSION); // DO SOMETHING WITH THOSE STRINGS HERE! // cleanup wglDeleteContext( rc ); ReleaseDC( wnd,dc ); DestroyWindow( wnd ); 您可以以某种方式将该代码插入您的安装程序或应用程序,并至少检查GL版本为1.1;这将检测“驱动程序未安装”的情况.要解决实际的OpenGL驱动程序错误,你必须弄清楚它们并解决它们.很多工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows sever 2008r2配置辅助DNS实现主DNS的备用
- iis-7 – 更改IIS 7上的计算机名称
- 如何在Windows上创建PHP扩展?
- windows – 监视COM对象
- active-directory – 如何仅将组策略应用于特定IP范围内的客
- windows-phone-7 – Windows Phone 7 – 两列列表框
- windows – 如何手动确定当前操作系统的CodePage和Locale
- windows – 如何在GoSublime的命令shell中退出“go run”?
- 在Windows上,绑定装载卷在docker-compose中的行为与docker
- windows – 将文件复制到不可执行的文件夹中?