
学习随笔
文章平均质量分 75
ison81
这个作者很懒,什么都没留下…
展开
-
OpenGL学习随笔(五)
困难接踵而至,不论是想深入研究还是快速了解全貌,对于我来说,看来不是件容易的事。继投影之后,连续看完了redbook中关于光照、位图、纹理三个章节。光照一节,看完之后虽然知道如何使用api,但始终有一种不快的感觉,不知其来龙去脉,为什么要这样定义api?出于物理实现还是另有其它?想从物理中找些答案,搜索了一下午,也没有什么头绪,只好暂时打处好奇的心。位图一节,同样也是被其API的设定搞晕了,似乎O原创 2009-01-01 23:34:00 · 1109 阅读 · 1 评论 -
FreeType Glyph Convention(二)
2. glyph轮廓线(outline)2.1 像素,点及设备分辨率在编写计算机图形程序时,一个很通常的假设是不同的物理设备(显示器或打印机)对像素的度量方式是不一样的。通常来说,像显示器或打印机这些输出设备在水平或垂直方向上往往有多种分辨率,这一点是被文字渲染高度重视的。我们通常使用两个以dpi为单位的数字来定义设备的分辨率,如分辨率为300*600dpi的打印机在水平方向上有300翻译 2009-04-13 22:19:00 · 1629 阅读 · 0 评论 -
FreeType Glyph Convention(一)
1. 与文字印刷相关的基本概念 1.1 字体文件(译注1),格式及信息字体是一组用于显示和打印的字符图像的集合。字体中的各个字符图像(character image)有着一些相同的属性,如外观,风格,衬线(译注2)等。在印刷领域,你必须要搞清楚“字体系列(font family)”和“同一系列的不同外观(font face)”之间的区别。不同的外观(face)一般来源于相同的字体模板,但在翻译 2009-04-11 11:56:00 · 1669 阅读 · 0 评论 -
OpenGL学习随笔(十二)
凹凸纹理让物体看上去更真实,而凹凸效果的本质是光源入射到凹凸不平的物体表面之后产生的反射现象。在图形领域“更真实,更快速”宗旨的指导下,凹凸也表现出多种具体的解决方案。如果要完全真实模拟凹凸,那必然是一个浩大的工程,我理解主要有两点困难:1、现实物体表面的凹凸数据的收集,包括静态数据和动态数据(物理作用之后产生的各种凹凸)2、凹凸表面的光照计算,如果要真实模拟,则需要逐点计算。虽然光源照射到平面后原创 2009-03-14 22:04:00 · 1143 阅读 · 2 评论 -
OpenGL学习随笔(四)
久违了,我的blog。这几天被透视投影卡住了,虽然到现在也没有完全搞明白,但也还是应该阶段性总结一下。 3D图像在2D平面显示要经过以下几个步骤,1. 数据配置环节,配置顶点、颜色等数据,确定了物体的大小和外观。2. 指定模型视点变换参数,将物体到3D场景中,并确定我们的观察点,也就是人眼的位置。3. 指定投影变换参数,确定投影方式和方向。4. 指定视口变换参数,将投影结果映射至视口(原创 2008-12-23 17:32:00 · 1299 阅读 · 0 评论 -
OpenGL学习随笔(三)
如果每个顶点都要用glVertex这样去输入,那对于动辄几千个多边形的模型来说,恐怕每一帧几千次函数调用会让某些系统“疯”掉。一个比较容易想到方法是把顶点放在一起然后用一个命令将顶点数组的首地址配置给OpenGL。当然OpenGL也提供了这样的方法,而且不仅仅是针对顶点,所有需要频繁配置的数据OpenGL都为其设计了数组式配置的接口。使用数组配置方式有两个步骤,1. 使用glEnableClien原创 2008-12-18 23:47:00 · 707 阅读 · 0 评论 -
OpenGL学习随笔(二)
一个场景中存在多个元素,不论3D还是2D都是一样。但由于3D多出一个Z轴,因而人眼从不同角度观察到的场景是不一样的。如何设置观察点是后话,首先还是要了解如何定义一个元素(不考虑如何把它放到场景里)。在3D计算机图形世界里,所有图元都通过顶点(vertex)来表示。OpenGL支持(x,y), (x,y,z), (x,y,z,w)三种形式描述的顶点。其中(x,y,z,w)是齐次坐标(homogene原创 2008-12-17 21:49:00 · 847 阅读 · 0 评论 -
OpenGL学习随笔(一)
OpenGL是什么?OpenGL只是一个3D图形库,最早由SGI发起,目前由khronos group维护。本质上我们显示设备仍然是2D的,但OpenGL给我们虚拟了一个3D世界,基于OpenGL的API我们可以方便的绘制3D图像,还不需要关心这些3D图像是如何被转换至2D平面来显示的。由于OpenGL并不是一个窗口系统,所以将OpenGL的输出送至本地窗口系统显示是因平台而异的。但至少目前Mac原创 2008-12-16 22:00:00 · 1067 阅读 · 1 评论 -
OpenGL学习随笔(十一)
前面的随笔中曾经有过一个疑问——在Windows下如何使用更高版本的OpenGL API。这个疑问在前几天终于被解开,答案即是通过wglGetProcAddress。Windows从95时代开始就只提供了1.1的OpenGL实现,所有高于此的功能,如果被硬件支持则都要使用wglGetProcAddress来调用,该API原型如下:PROC wglGetProcAddress( LPCSTR原创 2009-01-21 15:04:00 · 971 阅读 · 0 评论 -
OpenGL学习随笔(十)
在OpenGL中要使用光照分为四个步骤,1、启用光照2、启用光源,光源数量受硬件限制3、设置光源属性4、设置物体材质属性可见光照相关的属性比较多,要想理解各种光照效果,了解其内部数学计算公式是必要的,在此之上辅之一些实际例子,以有更直观效果,加深理解。从渲染输出的角度来说,光照的各种属性影响的是最后像素输出的颜色,即像素输出颜色由光照方程决定。这个方程redbook原创 2009-01-16 19:33:00 · 890 阅读 · 0 评论 -
OpenGL学习随笔(九)
早就想尝试一下在Mac上开发OpenGL程序,原因很简单,传闻Mac OS X对OpenGL支持得很好,当然也是防范老婆偶尔占用我的X60:)Apple为开发者提供了xCode,类似于Visual Studio一样的东东。要想在Mac下开发OpenGL程序其实就是如何使用配置xCode,应该与OpenGL本身没有什么关系。在网上搜索了一圈,终于在NeHe上找到一篇文章,按照其步骤基本就可以搞定了,原创 2009-01-11 12:07:00 · 1088 阅读 · 0 评论 -
OpenGL学习随笔(八)
简单纹理使用套路,最简单常用的场景,使用2维纹理对3D模型进行贴图。1、启用纹理功能,glEnable(GL_TEXTURE_2D)。2、创建纹理对象,glGenTexture(1, &texture)。3、将纹理对象设置为OpenGL当前纹理对象,以供OpenGL渲染,glBindTexture(GL_TEXTURE_2D, texture)。4、为纹理对象指定位图,glTe原创 2009-01-07 19:41:00 · 723 阅读 · 0 评论 -
OpenGL学习随笔(七)
很多时候,知识难以常握是因为我们只知其表不知其里,或者说不了解历史就不能理解现在。所以在学习到一定程度之后一定要去分析和实现OpenGL,之后才能真正理解和掌握OpenGL。每天在不断学习新的内容时,我都会选择重写测试代码,而不是在之前的代码上修改,原因是想找出一些思维定势和盲区。今天尝试用push和pop来写reshape时,就发现自己理解还不到位,static void reshape(int原创 2009-01-06 23:32:00 · 755 阅读 · 0 评论 -
OpenGL学习随笔(六)
在上次想往glDrawPixel中传入GL_BGR失败之后,就想找个机会把Mesa环境搭起来,以便后续学习。Mesa是一个OpenGL的跨平台开源实现,最新Mesa 7.x支持OpenGL 2.1标准。按照readme一步一步很容易就可以编译出windows版本的mesa。把之前编译不过的程序和mesa一起编译链接,成功!运行,结果也正确了。本以为事情就这样结束了,可是控制台上打印输出的OpenG原创 2009-01-03 22:52:00 · 2045 阅读 · 0 评论 -
MapView开发坎坷经历
近来想在App中实现一种效果(如下图),在Fullscreen的MapView上叠一个Navigation Bar,Tap MapView则Navigation Bar出现,再次Tap则消失,类似于iOS自带的照片App的效果。初想应该很简单,但过程中也经历一些曲折,主要还是自己原创 2011-09-12 10:59:15 · 1455 阅读 · 1 评论