- 博客(28)
- 资源 (1)
- 收藏
- 关注
转载 OpenGL入门学习——第十六课 在Windows系统中显示文字
本课我们来谈谈如何显示文字。OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。最常见的方法就是,我们给出一个字符,给出一个显示列表编号,然后操作系统由把绘制这个字符的OpenGL
2013-12-05 18:10:35 845
转载 OpenGL入门学习——第十五课 从“绘制一个立方体”来看OpenGL的进化过程
呵呵,绘制一个立方体,简单呀,我们学了第一课第二课,早就会了。先别着急,立方体是很简单,但是这里只是拿立方体做一个例子,来说明OpenGL在绘制方法上的改进。
2013-12-05 18:08:43 872
转载 OpenGL入门学习——第十四课 OpenGL版本和OpenGL扩展
OpenGL从推出到现在,已经有相当长的一段时间了。其间,OpenGL不断的得到更新。到今天为止,正式的OpenGL已经有九个版本。(1.0, 1.1, 1.2, 1.2.1, 1.3, 1.4, 1.5, 2.0, 2.1)每个OpenGL版本的推出,都增加了一些当时流行的或者迫切需要的新功能。同时,到现在为止,OpenGL是向下兼容的,就是说如果某个功能在一个低版本中存在,则在更高版本中也
2013-12-05 18:08:09 776
转载 OpenGL入门学习——第十三课 OpenGL是一个状态机
前一段时间里,论坛有位朋友问什么是状态机。按我的理解,状态机就是一种存在于理论中的机器,它具有以下的特点:1. 它有记忆的能力,能够记住自己当前的状态。2. 它可以接收输入,根据输入的内容和自己的状态,修改自己的状态,并且可以得到输出。3. 当它进入某个特殊的状态(停机状态)的时候,它不再接收输入,停止工作。
2013-12-05 18:07:42 712
转载 OpenGL入门学习——第十二课 OpenGL片断测试
片断测试其实就是测试每一个像素,只有通过测试的像素才会被绘制,没有通过测试的像素则不进行绘制。OpenGL提供了多种测试操作,利用这些操作可以实现一些特殊的效果。我们在前面的课程中,曾经提到了“深度测试”的概念,它在绘制三维场景的时候特别有用。在不使用深度测试的时候,如果我们先绘制一个距离较近的物体,再绘制距离较远的物体,则距离远的物体因为后绘制,会把距离近的物体覆盖掉,这样的效果并不是我们所
2013-12-05 18:07:09 670
转载 OpenGL入门学习——第十一课 纹理的使用入门
我们在前一课中,学习了简单的像素操作,这意味着我们可以使用各种各样的BMP文件来丰富程序的显示效果,于是我们的OpenGL图形程序也不再像以前总是只显示几个多边形那样单调了。——但是这还不够。虽然我们可以将像素数据按照矩形进行缩小和放大,但是还不足以满足我们的要求。例如要将一幅世界地图绘制到一个球体表面,只使用glPixelZoom这样的函数来进行缩放显然是不够的。OpenGL纹理映射功能支持将一
2013-12-05 18:06:40 1541
转载 OpenGL入门学习——第十课 BMP文件与像素操作
今天我们先简单介绍Windows中常用的BMP文件格式,然后讲OpenGL的像素操作。虽然看起来内容可能有点多,但实际只有少量几个知识点,如果读者对诸如“显示BMP图象”等内容比较感兴趣的话,可能不知不觉就看完了。像素操作可以很复杂,这里仅涉及了简单的部分,让大家对OpenGL像素操作有初步的印象。学过多媒体技术的朋友可能知道,计算机保存图象的方法通常有两种:一是“矢量图”,一是“像素图”
2013-12-05 18:05:59 800
转载 OpenGL入门学习——第九课 使用混合来实现半透明效果
今天介绍关于OpenGL混合的基本知识。混合是一种常用的技巧,通常可以用来实现半透明。但其实它也是十分灵活的,你可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以
2013-12-05 18:05:31 1012
转载 OpenGL入门学习——第八课 使用显示列表
今天介绍关于OpenGL显示列表的知识。本课内容并不多,但需要一些理解能力。在学习时,可以将显示列表与C语言的“函数”进行类比,加深体会。我们已经知道,使用OpenGL其实只要调用一系列的OpenGL函数就可以了。然而,这种方式在一些时候可能导致问题。比如某个画面中,使用了数千个多边形来表现一个比较真实的人物,OpenGL为了产生这数千个多边形,就需要不停的调用glVertex*函数,每一个多
2013-12-05 18:04:53 641
转载 OpenGL入门学习——第七课 使用光照来表现立体感
今天要讲的是OpenGL光照的基本知识。虽然内容显得有点多,但条理还算比较清晰,理解起来应该没有困难。即使对于一些内容没有记住,问题也不大——光照部分是一个比较独立的内容,它的学习与其它方面的学习可以分开,不像视图变换那样,影响到许多方面。课程的最后给出了一个有关光照效果的动画演示程序,我想大家会喜欢的。从生理学的角度上讲,眼睛之所以看见各种物体,是因为光线直接或间接的从它们那里到达了眼睛。人
2013-12-05 18:04:20 999
转载 OpenGL入门学习——第六课 动画的制作
今天要讲的是动画制作——可能是各位都很喜欢的。除了讲授知识外,我们还会让昨天那个“太阳、地球和月亮”天体图画动起来。缓和一下枯燥的气氛。本次课程,我们将进入激动人心的计算机动画世界。
2013-12-05 18:03:29 1073
转载 OpenGL入门学习——第五课 三维的空间变换
今天要讲的是三维变换的内容,课程比较枯燥。主要是因为很多函数在单独使用时都不好描述其效果,我只好在最后举一个比较综合的例子。希望大家能一口气看到底了。只看一次可能不够,如果感觉到迷糊,不妨多看两遍。有疑问可以在下面跟帖提出。我也使用了若干图形,希望可以帮助理解。在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能是X轴向右,Y轴向上,Z轴垂直屏幕。这些
2013-12-05 18:02:55 1081
转载 OpenGL入门学习——第四课 颜色的选择
本次学习的是颜色的选择。终于要走出黑白的世界了~~OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式。无论哪种颜色模式,计算机都必须为每一个像素保存一些数据。不同的是,RGBA模式中,数据直接就代表了颜色;而颜色索引模式中,数据代表的是一个索引,要得到真正的颜色,还必须去查索引表。
2013-12-05 18:02:15 735
转载 OpenGL入门学习——第三课 绘制几何图形的一些细节问题
在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处。例如:点太小,难以看清楚;直线也太细,不舒服;或者想画虚线,但不知道方法只能用许多短直线,甚至用点组合而成。
2013-12-05 18:01:28 892
转载 OpenGL入门学习——第二课 绘制几何图形
本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念。一、点、直线和多边形我们知道数学(具体的说,是几何学)中有点、直线和多边形的概念,但这些概念在计算机中会有所不同。数学上的点,只有位置,没有大小。但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点。另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点。一般情况下
2013-12-05 17:53:18 1556
转载 OpenGL入门学习——第一课 编写第一个OpenGL程序
说起编程作图,大概还有很多人想起TC的#include 吧?但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。1、与C语言紧密结合。OpenGL命
2013-12-05 17:37:46 10918 1
原创 android启动流程分析
0. 背景因项目需要,作此分析,记录于此,方便查阅。1. bootloader代码路径:2. kernel代码路径:3. init代码路径: android-4.4_r1/system/core/init/init.c; android-4.4_r1/device/samsung/smdk4412/init.rc
2013-12-04 17:16:18 1438
原创 android系统移植之问题汇总
错误: request_suspend_state: wakeup init: untracked pid 123 exited原因:(1)检查发现这是由于init.rc里面会重新mount根文件系统为只读,导致init.rc不能创建子目录。(2)如果在ICS启动时,串口输出init: untracked pid之类的错误,说明init程序所在的分区权限不够,需要修改,在Telechi
2013-12-03 22:30:40 958
原创 android系统移植之文件系统分析
Android文件系统具有什么样的结构?我们如何才能将这一文件系统分离出来?又能以何种方式挂载文件系统呢?这些问题都会在文中找到具体的解决答案。用过Linux的朋友可能对开源的系统有一个非常好的印象。那么在日益成熟的手机操作系统中,有没有一款像Linux一样的开源系统呢?谷歌公司就退出了一款基于Linux平台的Android 操作系统来满足人们的需求。在这里大家可以先来了解一下Androi
2013-12-03 22:27:25 1103
原创 android系统移植之全过程
Android开发环境篇一. 安装:Required PackagesAndroid requires the following system packages:flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to gen
2013-12-03 22:20:43 2546
原创 android系统移植之概述
1. 概述移植工作一般的主要不外乎做以下这些事情:A、有的现成好的直接选配这个工作主要是熟悉该源码的编译系统,就是源码自动化编译是怎么组织的。linux环境下不外乎是Makefile及脚本。所以得熟悉这两个方面的知识。B、有的不好的代码修改好后选配这个工作不仅仅是要熟悉编译系统,还要熟悉别人的代码结构。一般牛X的软件架构也牛X,所以主要是学习牛X的人设计的代码结构,所谓的框架。
2013-12-03 21:29:36 845
原创 SPI驱动之主控制器驱动程序
在内核的drivers/spi/目录下有两个spi主控制器驱动程序:spi_s3c24xx.c和spi_s3c24xx_gpio.c其中spi_s3c24xx.c是基于s3c24xx下相应的spi接口的驱动程序,spi_s3c24xx_gpio.c运行用户指定3个gpio口分别充当spi_clk、spi_mosi和spi_miso接口,模拟标准的spi总线。UT4412BV01开发板预留了两路的s
2013-11-13 23:08:38 3171
原创 SPI驱动之子系统架构及重要数据结构
据个人所知,Linux下SPI一直是处于被“忽略”的角色,市场上大部分板子在板级文件里面都没有关于SPI的相关代码(例如,mini2440),而大部分讲解驱动的的书籍也没有专门的一章来讲述关于Linux下SPI方面的内容(例如,宋宝华的Linux设备驱动开发详解)。与I2C相比,SPI就是一个不被重视的“家伙”,为什么?我也不甚了解。由于项目需要在UT4412BV01上移植SPI,查阅网络上几乎所
2013-11-13 21:33:39 2298
原创 SPI驱动之UT4412BV01上SPI驱动的移植
最近项目需要,需要在UT4412BV01上移植SPI驱动,板子需要驱动SPI设备,上网找了很多资源,但是很多都是有问题,最终在基本理解驱动结构的前提下,将SPI驱动顺利移植到UT4412BV01。
2013-11-11 16:17:23 1647 1
原创 I2C总线协议及时序图详解
1. I2C协议概述I2C是philips提出的外设总线。I2C只有两条线,一条串行数据线SDA,一条是时钟线SCL,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。
2013-11-10 17:30:29 9309 3
原创 container_of宏分析
1. 背景概要最近这几天在忙于研究spi驱动,在看spi核心代码(spi.c)时,发现一个container_of宏,不甚了解,于是深入研究之。这不看不知道,一看吓一跳啊,一跟进去又给你整个更复杂的宏。好的,废话不多说,直接上代码:/* kernel3.0.15/drivers/spi/spi.c *//* kernel3.0.15/include/linux/spi/spi.h
2013-11-09 23:21:30 700
原创 struct与union内存分配问题
今天在调试代码时,关于struct与union内存分配问题产生了疑惑,故上网查询了相关资料,记于此,以便日后查看。struct与union在内存分配的时候,主要区别如下:前者按照结构体内定义的数据顺序来进行分配内存的,分配的基本单位(即:每分配一次的量)是struct里面所定义的最长数据类型的长度;后者联合体内的数据共用一块内存,是以union里面所定义的最大类型长度的整数倍来
2013-11-09 18:21:57 2607
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人