OpenGL世界
文章平均质量分 55
lcphoenix
白马饰金羁,连翩宇内驰,借问谁家子,巴蜀游侠儿
展开
-
OpenGL Shader基本概念
使用OpenGL创造的物体,在最终被绘制出来之前,有一个流水线处理过程,该过程被称为graphics pipeline,或者rendering pipeline,期间大部分工作由GPU执行,跟GPU紧密相关。 随着GPU的发展,现在的GPU加入了可编程处理器,开发人员可直接控制GPU的行为。所谓Shader,就是控制GPU的一堆指令集,程序员写出shader,输入到GPU中,GPU执行。原创 2011-06-29 10:55:00 · 11898 阅读 · 1 评论 -
OpenGL学习笔记:光照
人眼看见物体,是因为光线直接或间接的从那里到达了眼睛。人眼对光线强弱变化很敏感,胜过于颜色变化。现实生活中,有些物体本身就可以发光,比如太阳,而有的,只会反射光,如木头。OpenGL光照系统:OpenGL对光线的模拟如下:在光照系统中,分为三部分,光源(light)(发光的东西)原创 2011-07-25 10:03:11 · 1951 阅读 · 0 评论 -
OpenGL学习笔记:像素
想控制一切?欢迎来到像素操作。附:windows的BMP颜色和OpenGL颜色有所差异,BMP是BGR, OpenGL是RGB。最基本的三个操作函数: 1. 读,从屏幕上(显存中)读取像素到内存。glReadPixels 2. 写,从内存中绘制像素到屏幕(显存)。glDrawPi原创 2011-07-25 10:03:37 · 986 阅读 · 0 评论 -
OpenGL学习笔记:显示列表
显示列表是OpenGL的一个概念,其实质是一堆OpenGL的指令集。把一系列有关系的绘图指令集合在一起,形成一个显示列表,有以下好处: 1. 提升运行速度。OpenGL对显示列表有优化,比如保存中间结果,服务器端保存指令集等。可以提升指令的运行速度,降低开销 2. 便于管理。把一原创 2011-07-25 10:04:30 · 952 阅读 · 0 评论 -
OpenGL学习笔记:测试
测试:OpenGL里面有各种测试,只有通过测试的像素才会被绘制,否则根本不会被画出来。OpenGL测试的顺序是:剪裁测试、Alpha测试、模板测试、深度测试。如果某项测试不通过,则不会进行下一步比如深度测试,当一个像素被绘制,该像素的深度被记录在深度缓冲区。当新的像素即将覆盖旧的原创 2011-07-25 10:05:03 · 3272 阅读 · 0 评论 -
OpenGL学习笔记:动画基本概念
帧速:一秒钟展现的画面超过24幅,人眼就会以为是连续的。平时观看的电视,一般是25到30幅之间。对一个正常人来说,每秒60到120幅图画是最合适的,速度过快,人眼就反应不过来了。一定要匀速的播放每个画面,比如,在第一个1/24秒播放第一张图片,一定要在第二个1/24秒播放第二张,原创 2011-07-25 10:05:53 · 1282 阅读 · 0 评论 -
OpenGL学习笔记:如何屏幕定位
在绘制任何物体之前,首先要搞清楚屏幕的坐标长度和高度,以方便的准确定位位置。在OpenGL中,有两种不同的投影方式,gluPerspective透视投影和正交投影glOrtho。不同的投影方式,屏幕定位方式也不同先说正交投影,正交投影往往用于2D画面中,更原创 2011-09-06 15:53:28 · 3120 阅读 · 0 评论 -
常用链接
OpenGL官网:http://www.opengl.org/NeHe教程:http://nehe.gamedev.net/Nvidia开发者:http://developer.nvidia.com/node/76保罗项目:ht原创 2011-07-25 10:07:15 · 725 阅读 · 0 评论 -
OpenGL学习笔记:bump mapping
bump mapping是为了制作浮雕效果。(In 1978, James Blinn presented a method of performing what is called bump mapping. Bump mapping simulates the bumps o原创 2011-09-15 15:42:22 · 3159 阅读 · 0 评论 -
OpenGL学习笔记:雾(fog)
使用fog步骤:1. enable. glEnable(GL_FOG); // 使用雾气2. 设置雾气颜色。glFogfv(GL_FOG_COLOR, fogColor);3. 设置雾气的模式. glFogi(GL_FOG_MODE, GL_EXP); // 还可以选原创 2011-07-30 15:54:09 · 8200 阅读 · 0 评论 -
OpenGL学习笔记:二次曲面--gluQuadric
OpenGL的glu库提供了以下类型的二次曲面绘制:1. Cylinder, 圆柱体。使用gluCylinder函数2. Cone, 圆锥。使用gluCyliner函数。同Cylinder3. Sphere, 球体。使用gluSphere函数4. Disk,原创 2011-08-25 11:01:18 · 21570 阅读 · 1 评论 -
OpenGL学习笔记:颜色
OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式。无论哪种颜色模式,计算机都必须为每一个像素保存一些数据。不同的是,RGBA模式中,数据直接就代表了颜色;而颜色索引模式中,数据代表的是一个索引,要得到真正的颜色,还必须去查索引表。PC程序开发中,使用索引颜色已经不原创 2011-07-25 10:01:36 · 1525 阅读 · 0 评论 -
OpenGL学习笔记:纹理
纹理使用六步囊:1. 分配编号,纹理编号,创建纹理对象。 glGenTextures2. 预创建纹理对象,程序中要使用的纹理对象。glBindTexture。OpenGL中有一维,二维,三维纹理等纹理类型,使用纹理的时候,需要指定纹理类型,以及该类型对应的原创 2011-07-25 10:01:03 · 1178 阅读 · 0 评论 -
OpenGL学习笔记:混合
所谓混合:(glEnable(GL_BLEND)),就是把两种颜色混合在一起,通过公式或设定,达到想要的颜色效果。只有RGBA才能使用混合,颜色索引模式无法使用混合功能。混合的前提是,要有两个颜色(废话)。一个是已经画上去的颜色(Destination color,目标颜色),一原创 2011-07-25 10:00:02 · 786 阅读 · 0 评论 -
tessellation简介
tessellation,这个词往往被翻译作曲面细分。那首先来看看wiki的定义: A tessellation or tiling of the plane is a pattern of plane figures that fills the plane with no overlaps and no gaps. 以下是两张图片帮助理解(来源于wiki):原创 2011-06-29 11:31:00 · 2900 阅读 · 0 评论 -
转贴一片tessellation介绍的文章
Tessellation(N-Patch)(曲面拆分技术)背景来自:http://www.cnblogs.com/mavaL/articles/1861778.html DX11最关键的特性有以下五点:1. Compute Shaders:计算着色器2. New Instruction Set:新指令集3. HDR Compression:高动态范围纹理压缩4. M转载 2011-06-29 11:33:00 · 3621 阅读 · 0 评论 -
OpenGL学习笔记:版本和扩展
可以通过以下方法获取自己系统中的OpenGL版本: const char* version = (const char*)glGetString(GL_VERSION); printf("OpenGL 版本:%s/n", version); glGetString(GL_VENDOR); 返回OpenGL的提供厂商。 glGetString(GL_RENDERER); 返回执行O原创 2011-06-29 12:55:00 · 2994 阅读 · 0 评论 -
Bump / Normal / Displacement / Parallax Mapping
bump mapping : 计算点p的光强时不是直接使用p点的原始法向Np,而是在Np上加上一个小的扰动得到Np’,能够产生凹凸不平的表面效果。如何增加扰动也是用一张图像存储,即bump map。和普通的diffuse纹理映射一样,面片的每个点对应了bump map中的一个像素。normal mapping : 对model进行简化而尽可能保留细节信息的一种方法,对简化后的model进原创 2011-06-29 11:51:00 · 2034 阅读 · 0 评论 -
OpenGL学习笔记:顶点数组
绘制一个立方体的时候,需要6个正方形,普通的画法,需要指定6 × 4 = 24个顶点进一步优化:指定8个顶点,存在数组中,再创建另外一个数组,保存每个面使用的顶点序号。就是一个比较合理的程序结构。但程序依然要循环24次,分别指定每个正方形的顶点。进一步优化,使原创 2011-07-05 11:22:36 · 2055 阅读 · 0 评论 -
OpenGL学习笔记:拾取与选择
在开发OpenGL程序时,一个重要的问题就是互动,假设一个场景里面有很多元素,当用鼠标点击不同元素时,期待作出不同的反应,那么在OpenGL里面,是怎么知道我当前鼠标的位置是哪一个物体呢?OpenGL有一套机制,叫做Picking, 里面涉及到几个核心概念:1原创 2011-07-06 15:47:29 · 21779 阅读 · 6 评论 -
OpenGL学习笔记:文字显示
OpenGL没有直接的文字支持,所有需要输出文字的地方,都需要寻找第三方库的支持。在OpenGL中渲染文字有三种方法:1. bitmap Fonts.把文字搞成一张图片2. Outline Fonts. 把文字搞成各种点线面的三维模型3. Texture Mapped text.原创 2011-07-07 15:42:06 · 2023 阅读 · 1 评论 -
uvw坐标
在研究GL_TEXTURE_WRAP参数的时候,发现它分了三个坐标,s t r坐标,一时没弄清楚,后来发现其意思就是uvw坐标,那啥又是uvw坐标呢,其实就是xyz坐标,u=x, v=y,w=z.同理s=x, t=y. 完整形式的纹理坐标可以表示为(s,t,r,q),其中(原创 2011-07-21 16:39:21 · 7990 阅读 · 2 评论 -
OpenGL学习笔记:点 线 面
采用glVertext***来描述顶点,注意,单独的顶点不能使用,只是数据描述。OpenGl的顶点必须要在glBegin和glEnd之间见使用,可以使用定点来画:1. 单独的点2. 一条或几条线3. 各种形状的面具体形状如图:从三维的角度看,每个面都有两个face. 需要区分正面原创 2011-07-25 09:58:16 · 1290 阅读 · 0 评论 -
OpenGL学习笔记:三维变换
这是最基本,最复杂,最重要的一章,各种乱七八糟变换,一个场景最经典的比喻是照相机比喻,引用如下: (1) 将相机固定在三脚架上,并使之对准场景(视点变换)(2) 让要拍摄的场景位于取景框中合适的位置(模型变换)(3) 选择相机镜头或调整放大倍数(投影变换)(4) 决定照片的大小,原创 2011-07-25 09:59:26 · 1372 阅读 · 0 评论 -
OpenGL学习笔记:状态机理念
OpenGL是一种状态机模式,比如你用glEnable打开一个状态,在以后的绘图中将一直保留并应用这个状态,除非你调用glDisable及同类函数来改变该状态或程序退出。例如当前颜色是一个状态变量,可以把当前颜色设置为白色、红色或其他任何颜色,在此之后绘制的所有物体都将使用这种颜转载 2011-07-25 13:20:09 · 2633 阅读 · 0 评论