Opengl的坑——A卡N卡实现

最近搞mfc项目,往一个对话框里面塞GL的显示窗口。


塞是塞进去了,编译出来跑的也挺欢,但是换个机器再编译就出毛病了——GL部分不显示


经过多台机器验证,这不是编译或者dll的问题,完全是显卡的锅


简单来说,显示部分我是这样写的:


void GLView::Draw(){

CView::Draw();

RenderScene();

}


GLView是从CView中派生来的,在mfc中添加GL显示所需,其初始化时已添加这一句:


wglMakeCurrent(m_pDC->GetSafeHdc, m_hRc);


之后就不去管DC,RC了。


但是这样A卡上能跑,N卡上跑不出来!


要这样改,才能在N卡上跑出来


void GLView::Draw(){

CView::Draw();

wglMakeCurrent(m_pDC->GetSafeHdc, m_hRc);

Ren

### NVIDIA 显驱动更新错误解决方案 当在 Ubuntu 上更新 NVIDIA 显驱动时遇到问题,通常可以通过以下几个方面来排查并解决问题: #### 1. **确认当前驱动状态** 首先需要了解当前系统中已安装的显驱动版本以及其运行情况。可以使用以下命令查看当前使用的 GPU 和驱动程序: ```bash lspci | grep -i nvidia nvidia-smi ``` 如果 `nvidia-smi` 命令无法正常执行,则可能表明当前未加载正确的 NVIDIA 驱动。 --- #### 2. **禁用 Nouveau 开源驱动** Nouveau 是 Linux 系统中的默认开源驱动,在某些情况下可能会与 NVIDIA 的专有驱动冲突。因此,在安装或更新 NVIDIA 驱动之前,应确保禁用了 Nouveau[^3]。 - 使用以下命令卸载现有的 NVIDIA 驱动(如果存在): ```bash sudo apt-get --purge remove nvidia* sudo apt autoremove ``` - 创建或编辑 `/etc/modprobe.d/blacklist-nouveau.conf` 文件,并添加以下内容以禁用 Nouveau: ```conf blacklist nouveau options nouveau modeset=0 ``` - 更新初始化内存文件系统: ```bash sudo update-initramfs -u ``` - 重启计算机以使更改生效: ```bash sudo reboot ``` --- #### 3. **通过 Additional Drivers 安装最新驱动** 在 Ubuntu 中,推荐使用 “Additional Drivers” 工具来选择合适的 NVIDIA 驱动版本。这一步骤已在引用材料中提到过[^1]。 - 打开终端并输入以下命令启动 GUI 工具: ```bash ubuntu-drivers autoinstall software-properties-gtk ``` - 在弹出窗口中切换到 “Additional Drivers” 标签页,选择最新的稳定版 NVIDIA 驱动(例如 `nvidia-driver-xxx`),然后单击“Apply Changes”。 - 等待安装完成后重新启动系统。 --- #### 4. **手动下载并安装 NVIDIA 驱动** 若上述方法未能成功解决问题,可以选择从 NVIDIA 官方网站下载适用于特定硬件型号的驱动包[^2]。 - 下载对应版本的 `.run` 或 `.deb` 文件后,进入该目录并通过以下命令停止 X Server 并切换至控制台模式: ```bash sudo service lightdm stop ``` - 授予脚本可执行权限并运行它: ```bash chmod +x NVIDIA-Linux-x86_64*.run sudo ./NVIDIA-Linux-x86_64*.run ``` - 按照提示完成安装过程,最后重启机器验证效果。 --- #### 5. **处理常见错误场景** ##### (a) 黑屏问题 当升级 NVIDIA 驱动后出现黑屏现象时,可能是由于 GDM 登录管理器不兼容所致。此时建议将显示管理器替换为 LightDM: ```bash sudo apt install lightdm sudo dpkg-reconfigure lightdm ``` ##### (b) OpenGL 软件渲染问题 如 MATLAB 环境下仍强制使用 CPU 进行渲染操作,需进一步检查是否正确启用了 GPU 加速功能。尝试设置环境变量如下所示: ```bash export LIBGL_ALWAYS_INDIRECT=0 export __GLX_VENDOR_LIBRARY_NAME=nvidia ``` ##### (c) 网络连接丢失 对于部分用户反馈的情况——即安装 NVIDIA 驱动之后无线网失效的现象,可通过单独编译适配内核模块的方式恢复网络服务。 --- #### 总结 以上方案涵盖了从基础配置调整到高级调试技巧的一系列措施,能够有效应对大多数因 NVIDIA 显驱动更新引发的问题。实际操作过程中可根据具体情况灵活选用相应策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值