热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

opengl中gpu与cpu交互_3D图形和OpenGL简介

一、走向3D三维(3D)表示一个正在描述或显示的物体具有3个维度:宽度、高度和深度。例如,放在书桌上的一张画是一个二维物体,因为它没有可以

一、走向3D

三维(3D)表示一个正在描述或显示的物体具有3个维度:宽度、高度和深度。例如,放在书桌上的一张画是一个二维物体,因为它没有可以令人感受得到的深度。而旁边的药瓶却能感受到它是3D,因为它具备高度、深度、宽度。

6086eead77086c2a68c400bfdfb1aa23.png

几个世纪以来,艺术家们已经知道如何让一幅画有立体感并且具有真实的深度。通过颜料在二维画布上所创作的作品,它其实本质上画的是一个二维物体。类似,计算机3D图像实质上也是平面的,它只是在计算机屏幕上所显示的二维图像,但它可以提供深度的错觉。

2D + 透视 = 3D

二、3D图形技术和术语

  • 光栅化:实际绘制或填充每个顶点之间的像素形成线程
  • 线框渲染是有它的用处,但在大多数情况下我们并不是用线程,而是使用实心三角形渲染。
  • 着色:沿着顶点之间改变颜色值,能够轻松创建关照照射子啊一个立方体上的效果。另一方面,着色器则是图形硬件上执行的单独程序,用来处理顶点和光栅化任务。
  • 纹理贴图:不过是一个用来贴到三角形或多边形上的图片。在GPU上,纹理是快捷有效的。
  • 混合:混合是将不同的颜色混在一起。

三、3D图形的常见用途

实时3D图形的应用范围包括交互式游戏和模拟以及数据的可视化显示(供科学、医学或商业应用);

在个人计算机领域,3D图形的应用几乎没有止境。目前最常见的用途,游戏、AR、VR,都是基于OpenGL 的。3D图形在科学是视觉和工程应用中非常流行,物美价廉的3D硬件大量涌现使得这些应用技术空前的流行火爆。

Mac OS X 以及 iOS 都是使用OpenGL对所有窗口和控件进行渲染,从而创建了功能强大,引人入胜的可视化界面。

例如设计时使用的3D max ,还是游戏制作的Unity 3D,Cocos2D 底层都是使用了OpenGL。而我们医学上的影像渲染也都依托于OpenGL。

三(1)2D笛卡尔坐标

在二维绘图中,最为常用的坐标系统是笛卡尔坐标系统。笛卡尔坐标由一个X坐标和Y坐标构成。x坐标测量水平方向的位置,而y坐标则测量垂直方向的位置。

三(2)3D笛卡尔坐标

现在,我们把二维坐标系统拓展到三维空间中,并增加深度分量;在2D笛卡尔标上加一个新轴,z轴。

z轴同时垂直于x轴&y轴。它代表了一条从屏幕的中心朝向你们的直线(我已经旋转了这个坐标系统的视角,把y轴向左旋转,把x轴向下和后旋转。否则,z轴将直接面向我们,无法看到)。现在我们用3个坐标(x,y,z)来指定三维空间中的一个位置。

==深度:通常表示窗口坐标z值;==

四、着色器

在实时计算机图形中,最前沿的技术是可编程着色器(Programmable Shading)。图形卡不再是低能的渲染芯片。而是功能强大的高度可编程的渲染计算机。类似CPU的术语GPU应运而生。它代表图形处理单元,特指当今图形卡上的可编程芯片。它们是高度并行,并且具有非常快的速度。同样重要的是,程序员可以进行重新配置图形卡的工作方式,几乎可以实现任何可以想得到的特殊效果。

五、3D编程的基本原则

1.并发工具包

OpenGL基本上一种底层渲染API,我们不能告诉它“在什么地方绘制什么”--我们需要自己动手,通过载入三角形,应用必要的变化和正确的纹理、着色器并在必要应用混合模式来组合一个模型。这使得我们能够大量的底层控制,与使用高层工具包,使用OpenGL这样的底层API动人之处在于,我们不能仅仅是重现许多标准3D渲染,我们可以创造自己的算法,甚至可以去发现一些新的捷径、性能技巧和艺术视觉技术

2.坐标系统

在OpenGL 或几乎所有的3D API中创建一个用于绘图窗口时,必须指定希望使用的坐标系统以及指定的坐标如何映射到实际的屏幕像素。

小结

实际上需要一个物体的2幅画面从不同角度上感知真正三维空间,我们可以通过透视、隐藏直线消除、颜色、着色和其他技巧来创建深度幻觉。



推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 本文介绍了在 iOS 开发中设置图片和视图圆角的几种方法,包括通过 layer 设置圆角、使用贝塞尔曲线和 Core Graphics 框架,以及使用 CAShapeLayer 和 UIBezierPath。每种方法都有其优缺点,适用于不同的场景。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 开发笔记:树的浅析与实现 ... [详细]
author-avatar
mbe5757086
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有