OpenGL 的学习,一开始时学习API,随后是深入理解矩阵。矩阵学完之后,又回过头来去理解纹理。

最大的成就莫过于自己动手实现OpenGL。OPenGL的矩阵实现中主要遇到以下问题:

参考:

http://daojin.iteye.com/admin/blogs/1954425

1. 都有哪些矩阵,矩阵如何构造。

主要是三个矩阵:

1. 投影矩阵 Mp

2. 模型(视图)矩阵(实际上是一个矩阵,为方便模拟相机好理解,才分开,方便理解与学习)。   Mmodel_view

3. 视口矩阵。Mviewport

以上三个矩阵1,3 都有现成的可以使用。对于2,那么必须由开发者构造。

2. 坐标如何根据矩阵变换。

Mmodel_view * Mp

变换后除以w。得到正规化坐标。

然后再乘以ViewPort矩阵,得到屏幕坐标。

3. 裁剪。

一开始实现了1和2,对于3(裁剪)到现在也没有实现出来。但是找到了android的AGL的源代码中的裁剪部分,并理解了其中的算法。基本上的思路是,对与原来三角形与【视景体对应的正规化立方体(openGL术语,也就是x,y,z 为 -1,1 的边长为2的立方体)】求交点,得到多边形,然后多边形再转换为多个三角形存起来。

下面的博客是关于魔兽争霸地形贴图的算法,主要思想是一个方块分为中间菱形挖空的四个角。然后,根据角的个数和方位,中间进行填充。如果四个角都满的,那么就随机填一个满的进去:

下面说的1,2,4,8对应的是脚码,能结合出 其他的1~15的土块。也就是 2的4次方个。下面是一个同仁的解释:

http://www.cppblog.com/mybios/archive/2008/10/26/65076.html

自己动手实现OpenGL!相关推荐

  1. [置顶] 自己动手实现OpenGL之glViewPort(一)

    直接上代码. public static void glViewport( int x, int y, int width, int height ) { int surfaceHeight = mI ...

  2. 自己动手实现OpenGL之glViewPort(一)

    直接上代码. public static void glViewport(int x,int y,int width,int height) {int surfaceHeight = mInfo.he ...

  3. [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(三)

    上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{ Canvas canvas; int h ...

  4. 自己动手实现OpenGL-OpenGL原来如此简单(三)

    上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{Canvas canvas;int hei ...

  5. OpenGL(预备篇3)---OpenGL编程环境配置 vs2017篇---GLM---(自己动手系列)

    什么是GLM,有什么用? OpenGL Mathematics (GLM). 看样子这是一个OpenGL的数学库.在OpenGL编程中用处很大,可以下载来用用. 幸运的是,这个不用编译,下载后解压了就 ...

  6. SCARA——OpenGL入门学习一、二

    参考博客:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 简介 最近开始一个机械手臂的安装调试,平面关节型机器人又称SCA ...

  7. WhyGL:一套学习OpenGL的框架,及翻写Nehe的OpenGL教程

    最近在重学OpenGL,之所以说重学是因为上次接触OpenGL还是在学校里,工作之后就一直在搞D3D,一转眼已经毕业6年了.OpenGL这门手艺早就完全荒废了,现在只能是重学.学习程序最有效的办法是动 ...

  8. opengl如何画出一个球_OpenGL-Controlling and Monitoring the Pipeline

    全球图形学领域教育的领先者.自研引擎的倡导者.底层技术研究领域的技术公开者,东汉书院在致力于使得更多人群具备内核级竞争力的道路上,将带给小伙伴们更多的公开技术教学和视频,感谢一路以来有你的支持.我们正 ...

  9. opengl es的射线拾取

    2019独角兽企业重金招聘Python工程师标准>>> 在opengl中关于拾取有封装好的选择模式,名字栈,命中记录,实现拾取的功能,相对容易一些.但是到了opengl es里面就比 ...

最新文章

  1. 安卓工控主板运行时会自动重启_工控主板在工业自动化中的应用
  2. java.lang.UnsupportedOperationException 异常分析
  3. JDBC连接数据库集
  4. 收藏几个漂亮的login页面验证
  5. python--爬虫代码汇总
  6. 51单片机——独立按键
  7. 运筹学与管理科学著名期刊解读
  8. 全球资本市场竞争力指数排名发布,中国跃居第五
  9. Android的基站、WIFI、GPS定位三点定位源码下载
  10. 项目管理知识体系指南 (一)
  11. git reset --hard HEAD~X误删恢复操作
  12. OLAP列式存储之引擎特性
  13. Android连接网络打印机进行打印
  14. Android 自定义View(四)实现股票自选列表滑动效果
  15. 出现make: *** No rule to make target `all'. Stop.解决办法
  16. W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。
  17. html渐变色css3渐变,css3渐变
  18. 花了2万多买的Python教程全套,现在分享给大家……Python入门到精通(Python全栈开发教程)未完待续
  19. 有啊百度知道双色球红蓝走势图
  20. python爬取付费音乐包_Python爬咪咕收费音乐 高音质无损音乐

热门文章

  1. android n进入分屏代码分析_智慧分屏为“何物”?华为MatePad Pro解锁便捷又高效的新姿势...
  2. java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面
  3. influxdb tsm文件_利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
  4. 我的世界服务器如何修改加载规模,我的世界服务器预加载区域怎么调小
  5. 做个爱学习的孩子!收藏2019知名机器学习暑期学校大列表
  6. BigDecimal 使用详解
  7. 网络报错:“The connection is not for this device.”
  8. 人人都来写算法 之 快速排序
  9. 最新、最全面的LAMP+wordpress安装过程!!
  10. 为什么 React Elements 会有 $$typeof 这个属性?