关于 OpenGL 中平移矩阵变换与实体对象坐标平移的关系分析结论

关于 OpenGL 中平移矩阵变换与实体对象坐标平移的关系分析结论

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

除题目中所提及的平移矩阵变换和对象坐标平移,还有旋转的中心点设定(弄不好,旋转后,看不到几何体)以及摄像机视角两个未明确问题,仍需进一步研究明确,才不至于被隐形的几何体搞得无所适从。

言归正传,本人近期研究的结果是:

1、平移这种矩阵变换,只是对场景中所有几何体进行了平移,好像和观察视角是一个道理,但确实还不太知道,是否就是摄像机视角;

2、对象坐标平移,是真实的去移动几何体在场景中的位置,这个需要从几何体的顶点坐标着手,进行整体坐标量的加减,对于一个大的或细节较多的几何体来说,计算量稍显庞大,尚不知性能如何,猜测本人目前遇到的问题,可能就是需要通过这一技巧才能解决;最主要的是,几何体的坐标一改变,顶点缓存就要重建,这样就无形增加了与GPU通讯所带来的性能问题,理论上是这样的,也还需要进一步细化分析,修改完善代码进行测试才能知晓。

通过看别人的展示效果,感觉实际操作中,

一是要能从各个角度去看这个场景及场景中的物体,这个就是矩阵变换中平移、旋转、缩放所要做的事情了,只需更新变换参数到GPU中即可,相对附加工作量要小很多;

二是实际场景中,将几何体从一个位置移到另一个位置,这个并不涉及观察视角的问题,而是视角保持不变,而几何体要进行移动,涉及到几何体顶点坐标的修改与GPU中顶点缓存的更新,相对更新量要大一些;尚不知这种作法是否是正确的和常用的,有待进一步搜集资料后,再做研究、调测;

说来,以上两种改变几何体在屏幕中位置的作法,真的是根本不同的两种东西,不过一直以来,我是在拿第一种作法当作第二种问题的解决方式,故而达不到预期效果,从分析来看,应该是符合情理的。

以上仅为一种问题的分析思路,并不一定符合实际情况,仅供参考。

后续针对以上分析研究结论,再行实际修改、调测,希望能如我所愿,达到预期效果,届时再更新本文。

时间: 2024-08-04 09:28:10

关于 OpenGL 中平移矩阵变换与实体对象坐标平移的关系分析结论的相关文章

Hibernate实体对象的生命周期(三种状态详解)

Hibernate生命周期会经历三种不同的状态:     1.Transient(瞬态):实体对象在内存是自由存在的,即与数据库中的数据没有任何关系.换句话说就是:该实体从未与任何持久化上下文关联过,它没有持久化标识.例如:          //创建一个Transient对象  User user=new User(); user.setName("username");  user.setPassword("password");  //此时的user为一个Tr

ASP.NET中实现把form表单元素转为实体对象或集合

这篇文章主要介绍了ASP.NET中实现把form表单元素转为实体对象或集合,本文又是一个对重复数据处理的一个封装,非常实用的开发技巧,需要的朋友可以参考下     简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单:   代码如下: <input name='id' value='1' > <input name='sex' value='男' >   后台:

js解析json读取List中的实体对象示例

 这篇文章主要介绍了js解析json读取List中的实体对象的具体实现,需要的朋友可以参考下 1.由后台action 传给前台是需要将map 转成json格式   代码如下: Map<String, List> resultMap:  JSONObject json = JSONObject.fromObject(resultMap);  message = json.toString();    List中存放多个student对象    2.前台js 中先将结果json串转成对象  复制代

jsp 网站开发-如何在JSP页面中,把数组中的TreeSet中的实体存储地址变成实体对象

问题描述 如何在JSP页面中,把数组中的TreeSet中的实体存储地址变成实体对象 首先,感谢大家抽时间看我这问题. 问题阐述: 我在做Spring Hibernate和struts整合的实验,之前,我在Action类中已经将要放在页面中的数据,传到JSP页面中,以下是Action类的代码: /** * 显示所有的商品分类 * * * @return */ public void showAllCategory() { try { List<CategoryDTO> resultList =

C#从实体对象集合中导出Excel的代码_C#教程

或是将Datagrid或是Gridview的输出导出,实现大体上又分为调用COM+组件或是利用Response(当然是B/S架构的项目)的输出来做,COM+组件的方式以前在项目中也应用过,但说实话感觉效果并不好,一是布署很麻烦,二是当时记得好像WEB服务器端的有个进程老关不掉,并且还有个问题是服务器端安装的EXCEL版本的不同,在程序中调用的方法传入的参数个数都不相同,真是够郁闷的,但是好处是这种方式当然是最灵活的. 我们还是以一个B/S架构的项目应用来说说导出吧,通用一点儿的还是从数据集往外导

ASP.NET中实现把form表单元素转为实体对象或集合_实用技巧

简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单: 复制代码 代码如下: <input name='id'  value='1' > <input name='sex'  value='男' > 后台: 复制代码 代码如下: //以前写法             DLC_category d = new DLC_category();            

js解析json读取List中的实体对象示例_javascript技巧

1.由后台action 传给前台是需要将map 转成json格式 复制代码 代码如下: Map<String, List> resultMap: JSONObject json = JSONObject.fromObject(resultMap); message = json.toString(); List中存放多个student对象 2.前台js 中先将结果json串转成对象 复制代码 代码如下: var obj = eval("("+data+")&quo

二维图形的矩阵变换(二)——WPF中的矩阵变换基础

原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)--基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换.   Matrix结构 在WPF中,用Matrix结构(struct类型)表示二维变换矩阵,它是一个3*3的数组,结构如下,      由于第三列是常量0,0,1,因此并不作为公开属性,可见的只有剩余六个属性.   构造变换 虽然Matrix类公开了这六个属性让我们设置,但是靠直接设置这六个属性来实现平移.旋

PostgreSQL 打开文件句柄优化 - 百万以上实体对象初始化优化

标签 PostgreSQL , ulimit , nofile , fs.nr_open , setrlimit 背景 数据库是一种非常庞大的应用系统,就拿PostgreSQL来说,每个实体对象(物化视图.表.序列.索引.TOAST表.TOAST索引)都需要至少1个数据文件,还需要fsm, vm等辅助文件. 当数据库中有很多实体对象时,文件数会非常庞大,而对于Linux操作系统来说,单个进程的打开文件数是有限制的.PostgreSQL数据库新增了一层文件句柄管理,使用文件句柄池来管理文件的打开和