首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用OpenGL在安卓系统中渲染屏幕外的位图?

在安卓系统中使用OpenGL渲染屏幕外的位图,主要涉及到以下几个基础概念和技术步骤:

基础概念

  1. OpenGL ES:OpenGL for Embedded Systems的缩写,是OpenGL的一个子集,专为嵌入式系统设计,广泛应用于移动设备。
  2. 纹理(Texture):在图形学中,纹理是一种映射到3D模型表面的图像,用于增强视觉效果。
  3. 帧缓冲对象(Framebuffer Object, FBO):一种特殊的渲染目标,允许开发者将渲染结果输出到一个纹理中,而不是直接显示在屏幕上。

实现步骤

以下是实现屏幕外位图渲染的基本步骤:

1. 创建帧缓冲对象(FBO)

首先,需要创建一个FBO,并为其绑定一个纹理作为颜色附件。

代码语言:txt
复制
int[] fboId = new int[1];
GLES20.glGenFramebuffers(1, fboId, 0);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboId[0]);

int[] textureId = new int[1];
GLES20.glGenTextures(1, textureId, 0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId[0]);

2. 配置纹理参数

设置纹理的参数,如过滤模式和包裹模式。

代码语言:txt
复制
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);

3. 分配纹理内存并加载位图

使用Bitmap类加载位图,并将其上传到GPU。

代码语言:txt
复制
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_bitmap);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();

4. 检查FBO完整性

确保FBO配置正确且完整。

代码语言:txt
复制
int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
if (status != GLES20.GL_FRAMEBUFFER_COMPLETE) {
    // 处理错误
}

5. 渲染到FBO

切换到FBO进行渲染。

代码语言:txt
复制
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboId[0]);
// 进行绘制操作

6. 将结果绘制到屏幕

最后,将FBO中的纹理绘制到屏幕上。

代码语言:txt
复制
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
// 使用一个简单的四边形将纹理绘制到屏幕上

应用场景

  • 离屏渲染:用于实现复杂的视觉效果,如阴影、反射等。
  • 预渲染:提前计算某些图形元素,减少实时渲染的压力。
  • 动态贴图:创建可交互的背景或动态UI元素。

可能遇到的问题及解决方法

  • 纹理加载失败:确保位图格式正确,且尺寸符合OpenGL的要求。
  • FBO不完整:检查所有附件是否正确绑定,以及纹理参数设置是否正确。
  • 性能问题:优化渲染流程,减少不必要的绘制调用和状态切换。

通过上述步骤,可以在安卓系统中使用OpenGL有效地渲染屏幕外的位图,适用于多种图形处理需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android--SVG在安卓系统中的应用

,性能高等优势,谷歌在Android5.0引进了SVG,并转化为Vector,在Android中指的是Vector Drawable,也就是Android中的矢量图,可以说Vector就是Android...2.1以上的所有系统,只需要引用com.android.support:appcompat-v7:23.2.0以上的版本就可以了。...Vector 语法简介 通过使用它的Path标签,几乎可以实现SVG中的其它所有标签,虽然可能会复杂一点,但这些东西都是可以通过工具来完成的,所以,不用担心写起来会很复杂。...接下来是我们程序员需要注意的地方,在工程中使用Vector Drawable兼容5.0以下的版本方法 1、使用Android Studio 2.2以上的版本,gradle版本在2.0以上 1.1、在gradle...中添加 defaultConfig { vectorDrawables.useSupportLibrary = true } 1.2、在gradle中添加 compile

2.8K20

ApacheCN 安卓译文集 20211225 更新

、临别赠言 如何使用 Kotlin 构建安卓应用 零、前言 一、创建您的第一个应用 二、构建用户屏幕流 三、用片段开发用户界面 四、构建应用导航 五、基本库:RetroFit 库、Moshi 库和 Glide...精通 Kotlin 安卓开发 零、前言 一、从安卓开始 二、构建和运行 三、屏幕 四、连接屏幕流 五、外观和体验 六、权限 七、使用数据库 八、安卓偏好设置 九、安卓系统中的并发 十、安卓服务 十一、...五、了解游戏循环和帧速率 六、提高 2D/3D 游戏的性能 七、使用着色器 八、性能和内存优化 九、测试代码和调试 十、安卓在虚拟现实游戏中的应用范围 十一、使用 C++ 和 OpenGL 开发安卓游戏...启动原生安卓项目 三、Java 和 C/C++ 与 JNI 的接口 四、从本机代码调用 Java 五、编写完全本机的应用 六、使用 OpenGL 专家系统渲染图形 七、使用 OpenSL ES 播放声音...级别 十二、附录 b:参考书目 精通安卓 NDK 零、前言 一、使用命令行工具 二、本地库 三、构建网络 四、组织虚拟文件系统 五、跨平台音频流 六、OpenGL ES 3.1 与跨平台渲染 七、跨平台用户界面和输入系统

7.2K20
  • 扒一扒安卓渲染原理

    导语: 在测试流畅度的过程中,必不可免的要与FPS,Jank等指标接触,但为了加深理解,今天来简单扒一扒安卓的渲染原理; PerfDog使用Jank作为来代表游戏流畅度的指标,详情可以看 APP&游戏需要关注...二.Android系统绘图机制 现在的安卓终端通常在一个典型显示系统中首先由CPU发出图像绘制指令要让GPU去画一个样式,但CPU不能直接和GPU通信,也要遵守相应的规则,就和现在我们干什么事都要走个流程一样的嘛...然后CPU从内存中取出这个UI对象,再经过运算处理成多维的矢量图形,然后交给GPU去栅格化成位图,显示到屏幕上; 简单介绍一下矢量图和位图 矢量图:由一个函数来描述,这个函数描述了此图如何生成 位图:由像素点矩阵来描述...服务和其他系统服务一样是在Android系统的System进程里被启动并运行在其中的,主要负责统一管理设备中Android系统的帧缓冲区(Frame Buffer,简单理解为屏幕所显示出来的所有图形效果都是由它统一管理的...),在SurfaceFlinger服务启动的过程中会自动创建两个线程:其中一个线程用于监控控制台事件,另外一个线程则用于渲染系统的UI; Android应用程序为了能够将自己的UI绘制在系统的帧缓冲区上

    1.1K10

    CSS3动画性能优化集

    主线程和排版线程 现代浏览器中,渲染页面所要负责的线程主要有两个:主线程和排版线程。...主线程 运行 JS 计算 HTML 元素 CSS 样式 页面布局 绘制页面元素成一个或多个位图 把这些位图移交给排版线程 排版线程 通过 GPU 渲染位图,并显示在屏幕上 计算 HTML 元素 CSS...其中 position 的位移方案与第一个符合,在动画执行过程中会使浏览器重新渲染;另一外 transalte 则与第二个符合,在执行动画时不会发生重新渲染。...在安卓手机上表现尤其明显!所以移动端动画以css3动画为优先,jquery只能用来简单处理应用逻辑。...css3在移动端出现卡顿问题 css3动画在ios上跑没问题,但是在安卓上有时会出现卡顿现象,包括下面几点原因。 是否导致layout?

    16910

    安卓系统在未来如何更好地解决隐私保护与数据安全的问题?

    安卓系统可以通过以下方式更好地解决隐私保护与数据安全的问题: 强化权限控制:安卓系统可以进一步加强对应用程序权限的管理,确保用户能够清楚地知道应用程序需要哪些权限,并给予用户更多的控制权,例如允许用户选择性地授予应用程序某些权限而不是全部权限...完善数据加密机制:通过对用户数据进行端到端的加密,确保用户数据在传输和存储过程中得到保护,即使数据被窃取也无法解密。...增强隐私通知和控制:安卓系统可以为用户提供更多的隐私通知和控制选项,使用户能够更好地了解应用程序对其个人数据的访问和使用方式,并能够随时调整和撤销权限。...推广安全意识教育:安卓系统可以加强对用户的安全意识教育,教导用户如何安全地使用手机和应用程序,如何保护自己的隐私和数据安全。...通过以上措施,安卓系统可以更好地保护用户的隐私和数据安全,提供更安全可靠的使用环境。

    11510

    TRTCSDK自定义采集Texture2D视频通话

    frame.timestamp = 0; TRTCCloud.sendCustomVideoData(frame); 三、Texture2D方案: 本篇主要介绍Texture方案:使用安卓系统封装的...这是Texture方案比buffer方案最大的优势:性能好。 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:OpenGL、安卓端OpenGL ES、FBO离屏渲染。...将坐标数据传入到OpenGl 程式中: 2、安卓端OpenGL ES OpenGl一般用于在图形工作站,在PC端使用,由于性能各方面原因,在移动端使用OpenGl基本带不动。...OpenGL默认情况下,在GLSurfaceView中绘制的结果是显示到屏幕上的,但是实际情况中大部分时候都不需要渲染到屏幕中去,这个FBO就是来实现这个需求的,FBO可以让不渲染到屏幕当中去,而是渲染到离屏的...安卓端FBO写法 前文代码示例中,已经给出了FBO的写法了,这里再展示FBO的OpenGL.API 1、创建FBO //创建FrameBuffer mFrameBuffers = new int[1];

    1.7K60

    TRTCSDK自定义采集Texture2D视频通话

    frame.timestamp = 0; TRTCCloud.sendCustomVideoData(frame); 三、Texture2D方案: 本篇主要介绍Texture方案:使用安卓系统封装的...这是Texture方案比buffer方案最大的优势:性能好。 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:OpenGL、安卓端OpenGL ES、FBO离屏渲染。...将坐标数据传入到OpenGl 程式中: 2、安卓端OpenGL ES OpenGl一般用于在图形工作站,在PC端使用,由于性能各方面原因,在移动端使用OpenGl基本带不动。...OpenGL默认情况下,在GLSurfaceView中绘制的结果是显示到屏幕上的,但是实际情况中大部分时候都不需要渲染到屏幕中去,这个FBO就是来实现这个需求的,FBO可以让不渲染到屏幕当中去,而是渲染到离屏的...安卓端FBO写法 前文代码示例中,已经给出了FBO的写法了,这里再展示FBO的OpenGL.API 1、创建FBO //创建FrameBuffer mFrameBuffers = new int[1];

    1.4K41

    TRTCSDK自定义采集Texture2D视频通话

    frame.timestamp = 0; TRTCCloud.sendCustomVideoData(frame); 三、Texture2D方案: 本篇主要介绍Texture方案:使用安卓系统封装的...这是Texture方案比buffer方案最大的优势:性能好。 image.png 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:OpenGL、安卓端OpenGL ES、FBO离屏渲染。...将坐标数据传入到OpenGl 程式中: 2、安卓端OpenGL ES OpenGl一般用于在图形工作站,在PC端使用,由于性能各方面原因,在移动端使用OpenGl基本带不动。...OpenGL默认情况下,在GLSurfaceView中绘制的结果是显示到屏幕上的,但是实际情况中大部分时候都不需要渲染到屏幕中去,这个FBO就是来实现这个需求的,FBO可以让不渲染到屏幕当中去,而是渲染到离屏的...安卓端FBO写法 前文代码示例中,已经给出了FBO的写法了,这里再展示FBO的OpenGL.API 1、创建FBO //创建FrameBuffer mFrameBuffers = new int[1];

    1.3K40

    浅谈移动端 View 的显示过程 顶

    作者:个推安卓开发工程师 一七 随着科技的发展,各种移动端早已成为人们日常生活中不可或缺的部分,人们使用移动端产品工作、社交、娱乐……移动端界面的流畅性已经成为影响用户体验的重要因素之一。...上图展示的是一个完整的页面渲染过程。通过上图,我们可以初步了解每一帧页面从代码布局的编写到展示给使用者,其背后的逻辑是如何一步一步执行的。...屏幕如何呈像 像素点 在电子屏幕中显示的图片,其实都是由一个个“小点”所组成的,这些“小点”被称为“像素点”。每一个像素点都有自己的颜色,每一张完整的图片都是由它们相连拼接形成的。...从上图中我们可以看出,每隔 16ms ,安卓会发出一个 VSync 信号,收到信号后 CPU 开始处理下一帧的的内容,GPU 在 CPU 处理结束之后,将会进行光栅化,此时屏幕上显示的是上一帧已经处理完成的页面...需要注意的是,View 的 onDraw() 方法是空的,这是因为每个视图的内容都不相同,这个部分交由子类根据自身的需要来处理,才更加合理: ? 安卓渲染机制的整体流程 ?

    61520

    Android 10.0正在来的路上!

    目前,美国 Google公司的 AndroidP (安卓9.0),已经正式全面推出有几个多月了。...Android Q(安卓10.0)最新功能及变化 根据XDA的消息得出, Android 10.0将从系统底层支持 ANGLE 引擎 。...对于需要经常进行国际出行的安卓手机用户来说,这是一项非常方便的辅助拨号功能,省去手动添加国家/地区代码的繁杂步骤。 多显示器支持:系统底层支持将设备连接到外接的显示器,并可以同时使用两个屏幕显示。...看到这里你估计会问了,为什么不全面使用#000000等级的纯黑色,要知道目前大量出现的OLED材质与LCD屏幕不同,在显示黑色的时候是不会发光的,此时屏幕耗电要比显示其他颜色时小很多,也更加节省电量,因此如果遇到这种屏幕...在Android系统上有了ANGLE引擎的帮助,游戏开发者就能更容易的将OpenGL API转码为Vulkan API。

    93350

    像素的一生

    [像素形成.png] 写过C/C++代码的同学知道,我们必须使用操作系统提供的底层API去画图,通过操作系统底层去调用驱动程序,令驱动程序驱动硬件将图形库的像素放到屏幕上。...因此渲染流水线的整个过程就是将输入的HTML、CSS、JS转化为OpenGL调用,最后在屏幕上呈现像素 [渲染简单流水线.png] 像素的意义 简单来说,像素就是为了可以更加舒服的表达自身的意义,在此认为像素意义在于两种渲染...请注意,此时这些像素还没有出现在屏幕上 raster产生的位图数据存储在GPU内存中,通常是OpenGL纹理对象引用的GPU内存。...当前的“进程外”栅格化(即GPU)以不同的方式使用它们,更多是绘制操作的包装器,就是命令缓冲区command buffer与底层图形API无关 [image.png] GPU进程中的GL函数指针通过动态查找操作系统底层共享的...而且判断是否合成滚动条也有判断逻辑,在安卓和ChromeOS上可以合成所有的滚动条 [image.png] 合成任务 如下图,合成任务包含构建层树的过程。

    1.6K20

    Cocos 小白的性能优化探索

    并且不够灵活,因为图片的分辨率固定,在高分屏中,位图字体会出现一些锯齿。 另外一种是 Free type 字体,例如 ttf 格式的字体。...详细学习请见:OpenGL 文档。 使用 mask 组件的结点渲染三步骤 可以通过spector.JS来查看渲染帧信息。...第 2 帧渲染: 渲染命令如下,意思是通过 186 个顶点,画出 n(很多)个三角形,其实就是画出圆形,因为在 OpenGL(Webgl)中,各种形状都是通过三角形去拼出来的。...Etc1 绝大部分的安卓设备支持,PVRTC 所有的 iOS 设备支持。 如果图片不需要支持 alpha 通道,安卓选择 Etc1 RGB、iOS 选择 PVRTC 4bits RGB 即可。...如果需要支持 alpha 通道,安卓选择 Etc1 RGB Separate A,iOS 选择 PVRTC 4bits RGBA Separate A。

    2.6K20

    深入理解Android图形系统

    目录: 一、图形系统简介 1.1 图形系统的诞生 1.2 图形系统的总体结构 1.3 图形系统的各层职能 二、安卓图形系统 2.1 框架概览...显示系统是以驱动的形式存在于内核中,驱动是屏幕控制器的驱动或者DPU的驱动。显示系统的作用就是把所有窗口形成的一个位图在显示器上显示。...早期的显示驱动模型是FBDEV,它针对的是屏幕控制器,屏幕控制器没有运算能力,只能接收窗口系统已经合成好的位图来显示。...此时窗口系统的合成管理器会使用渲染系统来合成各个窗口的位图,合成也可以看出是一种特殊的渲染。后来屏幕控制器逐渐发展成了DPU,具有了运算能力,能进行合成操作。...二、安卓图形系统 Android是目前最流行的移动操作系统之一,我们今天就来具体分析一下Android的图形系统。

    3.5K53

    iOS界面渲染流程分析

    ~ 在最近的面试中,我发现一道面试题,其考点是:围绕iOS App中一个视图从添加到完全渲染,在这个过程中,iOS系统都做了什么?...4)启用(Enable)或者(Disable)— 告诉 OpenGL ES 在接下来的渲染中是 使用缓存中的数据。...6)绘图(Draw) — 告诉 OpenGL ES 使用当前定并启用的缓存中的数据渲染 整个场景或者某个场景的一部分。...---- IPC内部通信(进程间通信) 在研究这个问题的过程中,我有想过去看一下源码,试着去理解在视图完全渲染之前,IPC是如何调度的,可惜苹果并没有开源绘制过程中的代码。...压缩的图像数据被解码成其未压缩的位图形式 Core Animation使用未压缩的位图数据来渲染图层。

    2.6K20

    安卓高级图形程序设计: 探索创意与视觉体验的边界

    一、使用自定义绘图实现独特的界面效果 在安卓高级图形程序设计中,自定义绘图是一项强大的技术,它允许开发人员完全掌控应用程序界面的外观和行为。...二、利用OpenGL ES进行3D图形渲染 安卓高级图形程序设计还提供了对OpenGL ES的支持,使开发人员能够创建令人惊叹的3D图形和动画效果。...下面是一个简单的示例代码,演示了如何使用OpenGL ES在安卓应用程序中渲染一个立方体: public class CubeRenderer implements GLSurfaceView.Renderer...OpenGL ES和自定义的Cube类,我们可以在安卓应用程序中绘制一个简单的立方体。...总结 安卓高级图形程序设计为开发人员提供了强大的工具和技术,使他们能够在移动应用程序中创建出令人惊叹的用户界面和视觉效果。

    20720

    优化App冷启动,实现启动页错觉秒开

    安卓启动方式一般有3种: >Coldstart——冷启动: 此种方式最为耗时,一般是因为进程被干掉或者是第一次启动app,系统需要重新fork进程进行一系列初始化,后台没有该应用的进程。...接下来看看如何优化冷启动: 既然我们已经找到这个黑白屏是出自系统的预览窗口,我们就可以通过操控这个窗口来实现。...这个预览窗口是在activity启动页前显示的一个安卓优化措施,我们可以从主题中可以找到,是可以设置这个窗口配置的。...而我这里是在drawable中新建splashx_bg.xml使用bitmap位图设置的背景图,能够对图片做更多的设置操作。 ?...后谷歌修复了这个bug,解决方法我个人是去掉锁定屏幕设置或者将theme中的透明背景设为不透明。

    2K30

    ApacheCN 安卓译文集(二)20211226 更新

    安卓数据库编程 零、前言 一、在安卓系统上存储数据 二、使用 SQLite 数据库 三、SQLite 查询 四、使用内容供应器 五、查询联系人表 六、绑定到用户界面 七、安卓数据库的实践 八、探索外部数据库...二、高效调试 三、构建布局 四、内存 五、多线程操作 六、建立网络 七、安全 八、优化电池消耗 九、安卓系统中的原生编程 十、性能提示 安卓 NDK 秘籍 零、前言 一、你好,NDK 二、Java 原生接口...安卓 NDK 游戏开发秘籍 零、前言 一、构建环境 二、移植公共库 三、建立网络 四、组织虚拟文件系统 五、跨平台音频流 六、统一 OpenGL ES 3 和 OpenGL 3 七、跨平台用户界面和输入系统...五、片段 六、支持不同的屏幕尺寸 七、安卓兼容包 八、新的连接 API——安卓波束和 WIFI 直连 安卓应用开发秘籍 零、前言 一、活动 二、布局 三、视图、小部件和样式 四、菜单 五、探索片段、应用小部件和系统用户界面...六、使用数据 七、警报和通知 八、使用触摸屏和传感器 九、图形和动画 十、OpenGL 专家系统初探 十一、多媒体 十二、电话和网络 十三、获取位置和使用地理围栏 十四、为游戏商店准备好您的应用 十五

    2.7K20

    浅谈移动端 View 的显示过程

    作者:个推安卓开发工程师 一七 随着科技的发展,各种移动端早已成为人们日常生活中不可或缺的部分,人们使用移动端产品工作、社交、娱乐……移动端界面的流畅性已经成为影响用户体验的重要因素之一。...通过上图,我们可以初步了解每一帧页面从代码布局的编写到展示给使用者,其背后的逻辑是如何一步一步执行的。...屏幕如何呈像 像素点 在电子屏幕中显示的图片,其实都是由一个个“小点”所组成的,这些“小点”被称为“像素点”。每一个像素点都有自己的颜色,每一张完整的图片都是由它们相连拼接形成的。...其成像原理是电子枪发射出的电子束(阴极射线)通过聚焦系统和偏转系统,射向屏幕上涂有荧光层的指定位置。...] 安卓渲染机制的整体流程 [40474d84dc5ad0057bc6ca64b148dff2.png] 1.APP 在 UI 线程构建 OpenGL 渲染需要的命令及数据; 2.CPU 将数据上传(共享或者拷贝

    69620

    Tensorflow Lite人体姿势跟踪功能上线:基于PosNet的实时人体姿态估计

    怀着激动的心情,我们发布了一个「TensorFlow Lite」示例应用程序(https://www.tensorflow.org/lite),通过它在安卓设备上通过使用「PoseNet」模型来实现人体姿势估计...在 Google I/O』19 上,TensorFlow Lite 展示了应用程序 Dance Like,该程序通过使用 PoseNet 帮助用户学习如何跳舞。...PoseNet 示例应用程序 与现有的以 JAVA 写的安卓示例相反,PoseNet 示例应用程序是在 Kotlin 上开发的。...将位图缩放回屏幕大小,在「Canvas」对象上绘制新的位图。 使用从「Person」对象中获取的关键点位置在画布上绘制骨架。显示置信度超过特定阈值(默认值为 0.2)的关键点。...「SurfaceView」通过获取、锁定和在「View」画布上绘图,无延时地将安卓的 surface 对象显示在屏幕上。

    2.1K30

    OpenGL ES 2.0 Using Modern Mobile Graphics Hardware

    OpenGL ES 是与当前的嵌入式系统硬件系统有关系,那么如何保存当前平台下的环境,从而为渲染提供唯一的平台环境? 八. 移动设备屏幕的坐标系统和 OpenGL ES 的坐标系统是否相同?...像素点 渲染出来的图像是一张 位图 ,每一个像素点都是由 RGB 光原色进行组合形成的。...OpenGL ES 中引入,帧缓存(Frame Buffer)来进行渲染后的数据保存; 区别: 帧缓存和其它的缓存不一样的是,不用进行初始化,而标记、绑定等操作是一样的; 只有在 Bounds (显示范围...OpenGL ES 是与当前的嵌入式系统硬件系统有关系,那么如何保存当前平台下的环境,从而为渲染提供唯一的平台环境?...移动设备屏幕的坐标系统和 OpenGL ES 的坐标系统是否相同? 解答: OpenGL ES 是三维坐标系(x, y, z),设备屏幕坐标系统是二维坐标系(x, y) 三维坐标系: ?

    73020
    领券