0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何把OpenGL中3D坐标转换成2D坐标

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-07-09 10:40 次阅读

在OpenGL中,一切事物都在3D空间中,但我们的屏幕坐标确实2D像素数组,OpenGL大部分工作就是把3D坐标转换成适应屏幕的2D像素。

3D坐标转换成2D屏幕坐标的过程是由OpenGL的图形渲染管线管理的。

图形渲染管线的工作可以被划分为两个主要的部分:

把3D坐标转换成2D坐标。

把2D坐标转换成实际有颜色的像素。

注意:2D坐标和像素是不同的,2D坐标精确的描述了一个点在2D空间中的位置,二2D像素是这个点的近似值,2D像素收到你的屏幕/窗口分辨率的限制

图形渲染管线包含很多部分。首先,我们以数组形式传递3D个3D坐标作为图形渲染管线的输入,用来表示三角形,这个数组叫做定点数据(Vertex Data);定点数据是一系列定点的集合。一个顶点(Vertex)是一个3D坐标的集合。为了简单起见,我们假定每个顶点只由一个3D位置和一些颜色值构成。

注意:OpenGL不知道我们传入的顶点位置和颜色值到底需要构成什么,这个时候就需要我们去指定这些数据去表示渲染类型。做出的这些提示叫做图元(Primitive),我们可以指定一下三种:GL_POINTS、GL_TRIANGLES、GL_LINE_STRIP。

图形渲染管线的第一个部分是顶点着色器,它把单独的顶点作为输入,顶点着色器的主要目的是吧3D坐标转换成另外一种3D坐标。同时顶点着色器允许我们队顶点属性进行一些基本处理。

图元装配阶段是将顶点着色器输出的顶点作为一个输入,(如果是GL_POINTS,那么就是一个顶点),并把所有的点装配成指定图元的形状。

图元装配阶段的输出会传递给几何着色器。集合着色器吧图元形式的一系列定点作为集合的输入,它可以通过产生新的顶点构造出新的(或者其他的)图元来生成其他的形状。

几何着色器的输出会被传入光栅化阶段,它会把图元转换成最终屏幕上相应的像素生成供片段作色器使用的片段。在片段着色器运行之前会执行裁剪,裁剪会丢弃在视线范围外的所有像素,以提供执行效率。

片段着色器的主要目的是计算一个像素的最终颜色。在颜色确定以后,最终会被传入到一个最后的阶段 ,Alpha测试和混合测试阶段。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenGL
    +关注

    关注

    1

    文章

    84

    浏览量

    29021

原文标题:OpenGL工作流程:把3D坐标转换成2D坐标

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    苹果手机(IPHONE) OpenGL ES 3D 游戏开发培训班

    with Shaders 第二阶段--动画与2D3D绘图,使用Quartz绘图动画与2D3D绘图,使用QuartzL绘图1 图形世界的两个视图
    发表于 05-16 14:50

    labview 怎样抓取3D球体上某点的三维坐标

    鼠标点在3D球体上,能够自动输出该点三维坐标。谢谢各位大牛们
    发表于 04-14 23:44

    如何将一个3D散点图与3D网格图在一个三维坐标显示呢?

    如何将一个3D散点图与3D网格图在一个三维坐标显示呢?
    发表于 03-08 18:18

    坐标变换的疑问

    频率同步旋转的(d,q)坐标系经过此项变换后三相对称静止坐标的基波正弦变量将转换成 同步旋转坐标
    发表于 10-25 14:04

    针对显示屏的2D/3D触摸与手势开发工具包DV102014

    GestIC传感技术,将2D多点触摸和3D手势识别功能轻松集成至其显示应用。由于采用了基于电场的技术,现在我们可以跟踪显示屏表面甚至是距显示屏上方20 cm以内的手和手指手势。此外,该开发工具包提供了易于
    发表于 11-07 10:45

    如何同时获取2d图像序列和相应的3d点云?

    如何同时获取2d图像序列和相应的3d点云?以上来自于谷歌翻译以下为原文How to obtain the sequence of 2d image and corresponding 3d
    发表于 11-13 11:25

    请问怎么才能将AD3D封装库转换2D的封装库?

    请问怎么将AD3D封装库转换2D的封装库
    发表于 06-05 00:35

    如何计算才能把坐标转换成水平的坐标系?

    当mpu6050初始放置的时候是倾斜的,如何计算才能把坐标转换成水平的坐标系?转换后的效果是保证倾角不变,水平转动mpu,出来的数据是水平转动的。我用当前四元数与初始的四元数做差,得
    发表于 07-31 22:19

    请问altium designer09转换不了3D视图该怎么办?

    file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\2050622533\QQ\WinTemp\RichOle\VNZ`PW}U}`COT@YK1B$53TA.png使用AD09转换成3D视图的时候和
    发表于 09-12 03:26

    如何在AltiumPCB2D库里导出3D

    请问PCB 2D怎么导出3D
    发表于 09-11 22:17

    如何更改Altium图中3D的这个坐标轴?

    3D的这个坐标轴可以更改吗?怎么更改?
    发表于 09-18 05:36

    为什么3D2D模型不能相互转换

    AD17.1.5软件,3D2D模型不能相互转换,按3可以进入3D模型,按2不可以进入
    发表于 09-20 05:35

    如何将相对坐标转换成UBFS的绝对坐标

    嗨,各位,我目前正在使用一个触摸应用程序,它应该使用绝对坐标。如何将相对坐标转换成UBFS的绝对坐标?我已经阅读了数据表组件,但它没有说,
    发表于 10-28 09:58

    浩辰3D软件新手入门攻略:草图平面

    想要快速上手一款3D软件,首先对草图平面的掌握是必不可少的,因为无论是几何体(如 2D 线框元素)或过程特征(如孔特征)时,必须将其放置在锁定的草图平面上。浩辰3D软件的许多命令使用
    发表于 09-24 16:11

    【Altium小课专题 第193篇】PCB封装如何在2D3D模式之间进行切换?

    答:1)执行菜单命令“视图→切换到3维模式”即可切换到3D模式2)执行菜单命令“视图→切换到2维模式”即可切换到2D模式
    发表于 09-13 14:13