远程桌面,openGL

news2025/1/20 2:52:06

x11、xserver看另一篇博客


openGL是一种规范,用于绘制图像

OpenGL是Khronos Group开发维护的一个规范(也就是提供了一种接口),它主要为我们定义了用来操作图形和图片的一系列函数的API,需要注意的是OpenGL本身并非API。

GPU的硬件开发商则需要提供满足OpenGL规范的实现,这些实现通常被称为“驱动”,它们负责将OpenGL定义的API命令翻译为GPU指令。

OpenGL用于绘制图形

当然,如果硬件开发商的某款显卡无法在硬件上支持OpenGL所定义的所有功能,那么硬件开发商就必须通过软渲染的方式提供这种功能。

综上,OpenGL并非一个能够直接安装的库或包,它只是一个规范。我们只需要安装显卡的驱动即可,因为显卡驱动中就包括了对OpenGL规范的实现。

什么是Mesa和GLX

众所周知,OpenGL作为图形界的工业标准,其仅仅定义了一组2D和3D图形接口API,而对于窗口管理、IO消息响应等并没有规定。也就是说,OpenGL依赖各平台提供用于渲染的context以及具体实现方式,而各平台提供的实现不尽相同。这些实现主要有:Windows平台下的WGL、Linux下的Mesa/GLX、Mac OS X下的Cocoa/NSGL,以及跨平台的GLUT、GLFW、SDL等等。

Mesa是Linux下的OpenGL实现。它提供了对AMD Radeon系列、Nvidia GPU、Intel i965, i945, i915以及VMWare虚拟GPU等多种硬件驱动的支持,同时也提供了对softpipe等多种软件驱动的支持。Mesa项目由Brian Paul于1993年8月创建,于1995年2月发布了第一个发行版,此后便受到越来越多的关注,如今Mesa已经是任何一个Linux版本首选的OpenGL实现。

GLX则是在Linux上用于提供GL与窗口交互、窗口管理等等的一组API。它的作用与Windows的WGL、Mac OS X的AGL以及针对OpenGL ES的EGL相似。在Linux上,窗口创建、管理等API遵循X Window接口,而GLX提供了OpenGL与X Window交互的办法。因此GLX也可以运用于其他使用X Window的平台,例如FreeBSD等。

LIBGL_ALWAYS_INDIRECT=1 

永远启用间接渲染。

间接渲染意味着将使用 GLX 协议来传输 OpenGL 命令,而 X.org 将进行真正的绘制。(X.org 接收到命令后调用windows的GPU进行绘制)

直接渲染意味着应用程序可以直接访问硬件,而无需先通过 mesa 与 X.org 通信。x客户端直接向windows的GPU发送命令进行绘制。

直接呈现速度更快,因为它不需要将上下文更改为 X.org 进程。

直接渲染wiki

在经典的X Window System架构中,X Server 是唯一可以独占访问图形硬件的进程,因此也是在帧缓冲区上进行实际渲染的进程。X 客户端所做的就是与 X 服务器通信以分派渲染命令。这些命令是独立于硬件的,这意味着X11 协议提供了一个抽象图形设备的API,因此 X 客户端不需要知道或担心底层硬件的细节。任何硬件特定代码都存在于Device Dependent X中,X Server 中管理每种类型的视频卡或图形适配器的部分,通常也称为视频图形驱动程序

3D 渲染的兴起已经显示了这种架构的局限性。3D 图形应用程序往往会产生大量命令和数据,所有这些都必须分派到 X Server 进行渲染。作为进程间通信量X 客户端和 X 服务器之间的 (IPC) 增加,3D 渲染性能受到影响,以至于 X 驱动程序开发人员得出结论,为了利用最新显卡的 3D 硬件功能,需要一种新的无 IPC 架构。X 客户端应该可以直接访问图形硬件,而不是依赖第三方进程来这样做,从而节省所有 IPC 开销。这种方法称为“直接渲染”,与经典 X 架构提供的“间接渲染”相对。Direct Rendering Infrastructure最初是为了允许任何 X 客户端使用这种“直接渲染”方法执行 3D 渲染而开发的。

直接渲染模式需要OpenGL应用程序能够直接访问GPU(可以简单地认为OpenGL应用程序与GPU需要在同一台电脑上),而间接渲染则需要将OpenGL指令转发至X Window Server,由X Window Server负责执行真正的OpenGL指令。

澄清:在这两种情况下,渲染都是由 GPU 完成的(或技术上 - 可能由 GPU 完成)。然而在间接渲染过程中看起来像:

  1. 程序调用命令
  2. 命令通过 GLX 协议发送到 X.org
  3. X.org调用硬件(即GPU)进行绘制

在直接渲染中

  1. 程序调用命令
  2. 命令被发送到 GPU

也就是​OpenGL​命令少了一个人接手,也就是X.org

请注意,由于 OpenGL 的设计方式可以在网络上运行,因此间接渲染比架构的简单实现更快,即允许一次发送大量命令。然而,在上下文切换和处理协议所花费的 CPU 时间方面存在一些开销。

一个例子:WSL使用远程桌面的gnome。

command line - Opening Ubuntu 20.04 Desktop on WSL2 - Ask Ubuntu

我在 WSL 下获得“完整桌面”的首选方法是使用xrdp然后简单地运行 Windows 远程桌面连接以进入桌面管理器。这避免了 Ubuntu 和 Windows 之间的热键冲突。不利的一面是,它比使用本机 WSLg 慢一点。

最初的问题提到了“Ubuntu Desktop”(假设是 Gnome)和 Xfce,因此我将提供两者的步骤。Xfce 是两者中比较容易的,因为它不需要Systemd

请注意,此更新后的答案已在 Ubuntu 22.10 和 WSL2 版本 1.0.3 上进行了测试。

Xfce

sudo apt install xrdp xfce4
# If asked, select lightdm, although it probably doesn't matter

# Optionally, back up the default config
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

# Windows Pro and higher are often already running RDP on 3389
# Prevent conflicts:
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

# Prevent Wayland from being used in Xrdp
echo "export WAYLAND_DISPLAY=" > ~/.xsessionrc

# Optional, if you only have one desktop environment installed
echo startxfce4 > ~/.xsession 

sudo service xrdp start
# Or, if running Systemd
sudo systemctl restart xrdp

就是这样——您应该能够使用内置的远程桌面连接应用程序连接到您的 WSL 桌面。要连接的计算机将是localhost:3390。确保选择 Xorg 作为会话类型。


gnome桌面

随着 WSL 最近使用 Systemd 的能力,这已经变得更加“开箱即用”。我不确定我是否会“推荐它”,但这当然是可能的。

首先,启用 Systemd。重启 Ubuntu 后,确保 Systemd 正在运行sudo systemctl status

接下来的几个步骤与 Xfce 的类似:

# Block ACPI features, which cause issues in WSL2, from being installed with Gnome
sudo apt-mark hold acpid acpi-support

sudo apt install ubuntu-desktop xrdp

# Optionally, back up the default config
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

# Windows Pro and higher are often already running RDP on 3389
# Prevent conflicts:
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

# Optional if you only have one desktop environment installed
echo gnome-session > ~/.xsession 

指令解答

sudo apt-mark hold acpid acpi-support

关闭一些特性

sudo apt install ubuntu-desktop xrdp

安装gnome桌面、xrdp

xrdp

  • 我们看到,XRDP是RDP(远程桌面协议)的一个版本(同时当然也是基于x11协议),允许Windows以外的操作系统的用户远程连接到另一台计算机。在RDP的工作中,不同类型的网络技术被用来进行成功的无缝互动。在这个过程中,不同类型的数据通过多个独立的渠道在网络上安全地进行通信。
  • 通过3389端口(默认情况下),RDP协议向用户提供远程访问。使用该端口,应用程序和服务包(已启用RDP)被传输,允许微软通信服务将数据引导到RDP通道。然后,操作系统对RDP数据进行加密,使其能够被添加到传输的框架中。现在是终端服务设备重定向器(TSDR)的任务,处理RDP协议活动。

也就是我们要在wsl上开启一个xrdp的服务(客户端),这样本地就能通过xrdp协议与wsl进行通信,进而可以访问远程桌面,在xrdp上运行GNOME桌面,并控制他。(本地要开启服务端,在3390,远程也在3390)

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

备份xrdp.ini的配置文件,可选,该配置文件当然会在etc目录下。

sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

如果是windows pro会在本机的3389创建了一个xrdp,防冲突我们要新建xrdp。

windows使用查看端口占用

netstat -ano|findstr 3390

linux查看端口

sudo  netstat -tunlp | grep 3390

 两个系统使用的都是netstat命令,管道一个是grep,一个是findstr

sed 也就是替换命令,将3389全部换为3390

  • “ s/ ”代表匹配文本中提到的字符/模式出现的“替代”。
  • “ /g ”指的是替换文本中特定字符/模式的“全局”。

echo gnome-session > ~/.xsession 

xsession 应该就是开启x11桌面时选择的桌面环境。

如今,大多数 X 显示管理器都会让您选择一个会话。选择特定的会话会启动特定的桌面环境、会话管理器、窗口管理器。然后执行的只是那个 DE/SM/WM 以及它根据它选择读取的任何配置文件选择启动的任何程序。许多环境提供读取传统~/.xsession.

就是启动x11桌面环境将自动开启gnome-session


~/.xsessionrc使用以下内容创建:

export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export WAYLAND_DISPLAY=
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

然后:

sudo systemctl restart xrdp

与 Xfce4 一样,您应该能够使用内置的远程桌面连接应用程序连接到 Gnome 桌面。要连接的计算机将是localhost:3390。确保选择 Xorg 作为会话类型,为什么能映射到本地的3390,挺神奇的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode 配置有误导致的一次Linux 崩溃

一、问题描述 1. 要实现的功能 编写一个Linux 按键驱动,按下按键时,产生中断,在中断中启动定时器进行防抖处理。 2. 出现的问题 在中断处理函数中,调用 add_timer 函数设置定时器超时函数,并启动定时器。编写完驱动…

【消息队列】Apache Pulsar存储计算分离

前言 对于一个互联网项目来说,一般除了在语言层面的技术选型外,也会引入各种中间件,比如缓存、消息队列、搜索、NoSQL等,但是跳出语言层面来看的话,其实我们庖丁解牛之后,每个中间件都解决了特定的问题。 …

计组 作业九

作业9 题量: 36 满分: 100 作答时间:04-27 10:56至05-10 23:59 89.5分 一. 单选题(共18题,39分) 1. (单选题, 2分)Intel80486是32位微处理器,Core是______位微处理器。 A. 16B. 32C. 48D. 64 我的答案…

20.网络爬虫—Scrapy-Redis分布式爬虫

网络爬虫—Scrapy-redis详讲 Redis的安装与使用分布式概念和作用分布式爬虫分布式爬虫特点redis的使用Redis 操作/启动 Redis Desktop Manager下载特点和架构安装和使用Scrapy-redis 代码部署spider文件 settings文件 前言: 🏘️🏘️个人简介…

wsl2使用open3d等进行图像绘制

在~/.bashrc文件中添加两个环境变量 export DISPLAY"grep nameserver /etc/resolv.conf | sed s/nameserver //:0" export LIBGL_ALWAYS_INDIRECT0 第一行是让wsl将openGL命令(图形绘制命令)输出到哪里,也就是x-server的位置&…

【Linux】指令(上)

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:Linux ⭐代码仓库:Linux 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们的支持是我…

机器学习在生态、环境经济学中的应用及论文写作

近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

08_ThreadPool线程池

1. 架构说明 Java中的线程池是通过Executor框架实现的,该框架中用到了Executor,ExecutorService,ThreadPoolExecutor这几个类。 Executor接口是顶层接口,只有一个execute方法,过于简单。通常不使用它,而是…

什么是shell脚本和简单shell脚本练习

文章目录 什么是shell脚本和简单shell脚本练习什么是shell脚本为什么要学习shell脚本第一个脚本编写与执行编写第一个脚本 简单的shell脚本练习简单案例交互式脚本:变量内容由用户决定随日期变化:利用date建立文件数值运算:简单的加减乘除数值…

java内存占用过大分析,mat内存快照分析

背景 最近功能模块上线后,生产内存占用显著提升,查看gc日志发现年轻代频繁从2G回收到60M左右,猜测是在方法中频繁创建大对象导致,由于一时间无法通过review代码找出问题所在,只好将生产jvm内存快照dump后通过java mem…

Zotero+坚果云打造多设备同步的文献管理工具(保姆级教程)

Zotero坚果云打造多设备同步的文献管理工具(保姆级教程) 文章目录 Zotero坚果云打造多设备同步的文献管理工具(保姆级教程)Zotero介绍所需软件或插件实现方式步骤1:坚果云配置步骤2:Zotero配置步骤3&#x…

细讲shell中的循环语句--for语句

目录 一:何为循环 1.循环概述 2.使用循环的好处 二:for循环语句 1.for语句的用法 ​2. 语法结构 (1)一般格式 (2)类C语言格式 (3)死循环 3.事例 ​4.常用转义符 5.制作九九乘法表 三&…

旧照片修复-模糊图片变清晰-2023年度最强神器 codeformer

CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发。该模型通过结合了VQGAN和Transformer等技术,可以通过提供模糊或马赛克图像来生成清晰的原始图像。 功能: 1、老照片修复 2、黑白照片彩色…

LeetCode 2641 二叉树的堂兄弟节点 II

LeetCode 2641 二叉树的堂兄弟节点 II 给你一棵二叉树的根 root ,请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。 如果两个节点在树中有相同的深度且它们的父节点不同,那么它们互为 堂兄弟 。 请你返回修改值之后,树的根 root …

【Auto-GPT云部署】

部署自己的Auto-Gpt 先说说什么是Chat-Gpt Chat-GPT (Generative Pretrained Transformer)是由OpenAI提出的一种自然语言处理技术,是基于Transformers和预训练机制的大规模语言模型。与传统的基于规则或基于统计的自然语言处理方法不同,Chat-GPT使用深…

【网络抓包工具】tcpdump 最新版本移植到开发板(海思平台)

目录 一、概述 二、libpcap、tcpdump源码下载 三、libpcap、tcpdump交叉编译  👉3.1 交叉编译 libpcap  👉3.2 交叉编译 tcpdump 一、概述 tcpdump是一个功能强大的,用于抓取网络数据包的命令行工具,与带界面的Wireshark一样&am…

CLion开发工具 | 02 - 常用功能配置介绍

专栏介绍 配置项概览 CLion有非常多的配置项,本文将列举一些常用的配置项。 一、外观配置 1. 主题 2. 新UI 新的UI有点VScode化,个人不太喜欢,还是老的这套UI香,所以未开启: 3. 环境变量 IDE除了导入系统/用户的…

应急管理指挥中心大数据信息化管控平台建设方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 篇幅有限,无法完全展示,喜欢资料可转发评论,私信了解更多信息。

力扣刷题2023-04-27-1——题目:1329. 将矩阵按对角线排序

题目: 矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。 …

宝塔防火墙拦截页面代码模板2

宝塔防火墙拦截页面代码模板2 防火墙代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>云防御<…