`
daojin
  • 浏览: 677926 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

自己动手实现OpenGL!

 
阅读更多

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

 

 

 

分享到:
评论

相关推荐

    自己用C++写的一个ART重建(OPenGL仿真)

    我看网上实现ART算法一般都用matlab,所以自己动手写了一个C++版本的,可视化部分使用OpenGL开发库实现的

    零基础入门计算机图形学必不可少的在线网络公开课,手把手教您现代 OpenGL 的点点滴滴,构建爆款游戏引擎

    你是否想要利用现代OpenGL创建自己的3D游戏引擎?但又苦于没有简单易懂适合入门的中文教程?如果是,那么这门课程就是为你量身定制的! 在这门课程中,你将从基础知识开始,逐步深入探索图形渲染管线的各个阶段,...

    图形学方面实验报告---基于vc++与opengl

    说明:以下按每次作业的内容和要求给出设计和实现方面的提示、建议和参考,完成作业时只要完成要求,不必完全按照下述内容来实现。 1. 第2次作业 1.1. 选择合适的数据结构来表示三维物体 在动手做程序之前必须先考虑...

    MagicTools引擎(d3d与opengles渲染器,集成cocos2d)

    工程里带的导出插件目前只能导出网格,材质需要自己动手配置.(材质的编辑打算放到编辑器里做,然后在编辑器中绑定网格和材质,这也是cryengine和《古域》的做法,这样可以保证编辑的材质和游戏最终运行时的效果一样...

    欧拉公式求圆周率的matlab代码-openGLESbook:OpenGLES计算机图形学简介

    ES和着色器代码,提供对实时图形的动手实践 使用精心制作的3D插图描绘麻烦的概念,以便轻松吸收它们 包括问题集,解决方案手册和那些希望将本书用作课程文本的讲义 演讲笔记 (更新于190429) (更新于190429) ...

    《Android应用开发实战》

    全面介绍了Android的系统架构、开发环境的搭建、Android应用程序的常用组件,以及一个简单的微博客户端的实现方法,为接下来动手实现本书中的完整案例(新浪微博客户端)奠定了基础;第二部分实例篇:介绍了微博...

    C语言编写的俄罗斯方块(附源码)

    今年刚毕业的,自从学习C语言以来,一直有一个小小的愿望——“自己动手写一个俄罗斯方块”,今天终于实现了,查了很多资料,包括DOS下的编程、SDL、OPENGL等等,最后还是确定用Windows API来做,刚好要学习Windwos...

    《Android应用开发实战》配套源码

     全面介绍了Android的系统架构、开发环境的搭建、Android应用程序的常用组件,以及一个简单的微博客户端的实现方法,为接下来动手实现本书中的完整案例(新浪微博客户端)奠定了基础;第二部分实例篇:介绍了微博...

    Android应用开发实战 (李宁) PDF扫描版

    第一部分基础篇:全面介绍了android的系统架构、开发环境的搭建、android应用程序的常用组件,以及一个简单的微博客户端的实现方法,为接下来动手实现本书中的完整案例(新浪微博客户端)奠定了基础;第二部分实例篇...

    3D魔方.rar

    课程设计名称为“基于OpenGL的3D旋转魔方实现”。当前计算机游戏很流行,作为计算机编程的初学者,设计开发一个基于windows操作系统的小游戏一方面可以提高编程水平,另一方面培养了学生兴趣和动手能力。 在实际生活...

    DawnLightPlayer 源码

    DawnLightPlayer,一个新的基于FFMPEG的开源Player代码非常简单,由于刚动手写,所以代码也很少,很方便加入。 最新版本已经可以在Linux和WIN32平台运行 目前的TODO: 1. 完善X11,directX,openGL的输出 2. 没有...

    MagicTools引擎+编辑器+场景浏览器

    工程里带的导出插件目前只能导出网格,材质需要自己动手配置.(材质的编辑打算放到编辑器里做,然后在编辑器中绑定网格和材质,这也是cryengine和《古域》的做法,这样可以保证编辑的材质和游戏最终运行时的效果一样...

    Hands-On-Game-Animation-Programming:Packt出版的动手游戏动画编程

    动手C ++游戏动画编程 这是Packt发布的“ 的代码库。 从理论到使用C ++和OpenGL实施学习现代动画技术这本书是关于什么的? 动画是任何游戏中最重要的部分之一。 现代动画系统直接与轨道驱动的动画配合使用,并为诸如...

    Android开发权威指南

    从技术实现上,讲解了6大完整综合案例及源代码分析,分别是新浪微博客户端、蓝牙聊天、全键盘输入法、月球登陆(游戏)、贪吃蛇(游戏)、笑脸连连看(游戏)。 《Android开发权威指南》注重对实际动手能力的指导,在遵循...

    Android Framework实战开发篇

    是不是很想学习Android系统开发,可惜自己学习难度又太大,本课程将手把手教你学Android Framework开发,带你走进Android系统开发的殿堂,全课程以实战为主,让你自己动手可以定制自己喜欢的Android系统,让你的...

    Android开发权威指南源码

    从技术实现上,讲解了6大完整综合案例及源代码分析,分别是新浪微博客户端、蓝牙聊天、全键盘输入法、月球登陆(游戏)、贪吃蛇(游戏)、笑脸连连看(游戏)。 《Android开发权威指南》注重对实际动手能力的指导,在遵循...

    [Android开发权威指南].李宁.扫描版.pdf

    Android测试驱动开发等几个方面讲述 从技术实现上 讲解了6大完整综合案例及源代码分析 分别是新浪微博客户端 蓝牙聊天 全键盘输入法 月球登陆(游戏) 贪吃蛇(游戏) 笑脸连连看(游戏)  《Android开发权威指南...

Global site tag (gtag.js) - Google Analytics