OpenGL
文章平均质量分 95
thenile
这个作者很懒,什么都没留下…
展开
-
Vertex Shader&Pixel Shader介绍
Vertex Shader & Pixel Shader 介绍1.固定功能的图形处理流水线(fixed function graphics pipeline)能够实现Vertex Shader和Pixel Shader的显卡的图形处理流水线被称作为是可编程的,相对而言,在此之前的图形处理流水线被称作为是固定功能(fixed function),下面是OpenGL图形处理的一个简图:转载 2013-04-27 12:18:37 · 1142 阅读 · 0 评论 -
openGL CG2 vertex lighting
之前的一篇教程HelloCG介绍了Cg的一些最基本的东西。这篇教程将介绍利用可编程渲染管线来实现光照。光照模型将采用广泛应用的phong模型,虽然这种模型在openGL的固定管线中已经实现了,但是学习该光照模型可以更加清楚的了解可编程渲染管线的流程。首先要实现phong光照模型先要了解该模型中光照计算,关于phong模型光照计算的相关资料网上相当多,或者参考任何一本计算机图形学的相关书籍即转载 2013-04-27 12:30:53 · 781 阅读 · 0 评论 -
openGL CG4 - Lighting + Texture
前几个教程详细的讲解了使用可编程渲染管线实现如何实现光照。如果我们要渲染的模型是带有纹理,要想带有纹理的模型也应用于光照又该怎样实现呢?有的同学可能知道,在openGL的固定管线也可以设置TextureEnvMode模式为GL_MODULATE就可以实现光照和纹理颜色的混合。下面我们就用Cg来实现这个功能。整个程序将在教程03的基础上加上贴图来实现。为了使用贴图,首先要向vertex sh转载 2013-04-27 12:32:11 · 1040 阅读 · 0 评论 -
openGL CG06 – Normal Mapping (法线贴图)
Normal Mapping(法线贴图),不论是在游戏开发还是其他计算机图形开发中都是使用很广泛的技术。如果一个物体的表面粗糙不平,物体顶点的法线也就朝向各个不同的方向,所以物体看起凹凸不平。要表现这样的物体,当然可以使用相当多的包含不同法线的顶点数据,这样做的效率可想而知是很低的。在要求及时性很高的交互式图形程序,比如游戏中,显然这种方法不适用。为了解决这个问题,提出了法线贴图的概念。法转载 2013-04-27 13:32:50 · 3672 阅读 · 0 评论 -
openGL CG07 – Toon Shader
这篇教程将介绍一种卡通渲染(Toon Shader)的方法,卡通渲染属于non photorealistic rendering或简称NPR中的一种。卡通渲染一个物体看起来的效果就像卡通绘画一般,这里介绍一种简单的渲染卡通效果的方法。和一般光照渲染不同的是,卡通效果渲染的物体像素之间颜色过渡是一种阶梯函数形式的,而一般的光照渲染的物体颜色过渡则是平滑的连续函数形式。Fig1比较了卡通渲染和一般基于转载 2013-04-27 13:33:23 · 1490 阅读 · 0 评论 -
OpenGL基本图元
任何复杂的三维模型都是由基本的几何图元:点、线段和多边形组成的,有了这些图元,就可以建立比较复杂的模型。因此这部分内容是学习OpenGL编程的基础。 一、基本图元的描述及定义 OpenGL图元是抽象的几何概念,不是真实世界中的物体,因此须用相关的数学模型来描述。所有的图元都是由一系列有顺序的顶点集合来描述的。OpenGL中绘制几何图元,必须使用glBegain()和glEnd()这一对转载 2013-04-27 12:21:02 · 1719 阅读 · 0 评论 -
用OpenGL实现射线拣取对象
第一步: 实现屏幕坐标到三维世界空间坐标的转化,利用函数 gluUnProject直接可以得到屏幕坐标相应的三维空间坐标。[cpp] view plaincopygluUnProject((GLdouble)xpos,(GLdouble)ypos,1.0,mvmatrix,projmatrix,viewport,&wx,&wy,&wz);转载 2013-04-27 12:26:52 · 6587 阅读 · 0 评论 -
Light Mapping
Light Mapping是一种比较"便宜"的实现各种光照效果的技术。它虽然实现的是光照效果,但是确实通过纹理贴图来实现的。它的基本思想是:将需要的光照效果保存在纹理中,然后和几何体表面的其他纹理通过一定的方式"混合"在一起来实现效果。根据Light Mapping实现的效果不同,可以将纹理贴图分为: Diffuse Light Mapping:实现漫反射效果 Specular L转载 2013-04-27 12:28:13 · 1137 阅读 · 0 评论 -
OpenGL图形管线和坐标变换
1. OpenGL 渲染管线OpenGL渲染管线分为两大部分,模型观测变换(ModelView Transformation)和投影变换(Projection Transformation)。做个比喻,计算机图形开发就像我们照相一样,目的就是把真实的场景在一张照相纸上表现出来。那么观测变换的过程就像是我们摆设相机的位置,选择好要照的物体,摆好物体的造型。而投影变换就像相机把真实的三维场景显转载 2013-04-27 10:35:10 · 620 阅读 · 0 评论 -
BumpMap、NormalMap的区别
BumpMap一种是Emboss Bump Map(浮雕凹凸贴图),它使用的是Height map,原理是在原始图像的基础上,对高度场图像进行复制、轻微平移、差操作。但它存在很多严重的局限性,它只能用于漫反射表面,对于镜面高光来说是不可能的。当光源直接照射在物体表面时,如果没有偏移,那么物体表面就不会出现任何凹凸现象。 DOT3 Bump Map(点乘凹凸贴图),它使用的是Normal转载 2013-04-27 12:30:05 · 5931 阅读 · 0 评论 -
凹凸映射Bump Mapping
凹凸映射和纹理映射非常相似。然而,纹理映射是把颜色加到多边形上,而凹凸映射是把粗糙信息加到多边形上。这在多边形的视觉上会产生很吸引人的效果。我们只需要添加一点信息到本来需要使用大量多边形的物体上。需要注意的是这个物体是平的,但是它看起来却是粗糙不平的。让我们来看看左边的那个立方体。如果你很近地观察它时,你会发现它上面的很多细节。它看起来好像是由成千上万个多边形构成的,其实它只是由6个矩形构成。你或转载 2013-04-27 12:29:28 · 1203 阅读 · 0 评论 -
OpenGL工作流程
OpenGL处理流水线(pipe line):1.几何顶点(vertexs)2.图元(primitives)3.片元(fragments)4.象素数据(pixels) 具体过程:1 几何顶点(vertexs) 1)输入数据OpenGL流水线必须提供如下的输入数据类型几何顶点(Vertices)——几何顶点描述了几何物体的形状。 指定几何顶点要用glV转载 2013-04-27 12:19:54 · 974 阅读 · 0 评论 -
理解OpenGL拾取模式(OpenGL Picking)
在用OpenGL进行图形编程的时候,通常要用鼠标进行交互操作,比如用鼠标点选择画面中的物体,我们称之为拾取(Picking),在网上看了很多OpenGL拾取的文章,但大多是只是介绍在OpenGL中如何拾取,如何利用OpenGL提供的一系列函数来完成拾取,最多再简单介绍下OpenGL的名字栈(Name stack),拾取矩阵(Picking Matrix)等等,但是拾取真正的原理确没有提到。所以,我转载 2013-04-27 12:23:45 · 807 阅读 · 0 评论 -
OpenGL CG 系列教程1 - Hello CG
这篇教程将介绍如果在openGL中使用CG(C for Graphic)语言。想在程序中使用CG,首先要下载并安装 NVIDIA的Cg Toolkit。( http://developer.nvida.com/CgTutorial ) 安装好后,在openGL程序中就可以添加cg.h和cgGL.h头文件了。要在openGl程序中使用Cg,这两个头文件必不可少。[cpp] view plai转载 2013-04-27 12:24:56 · 1474 阅读 · 0 评论 -
利用OpenGL进行模型表现
这篇文章介绍一下用OpenGL来表现模型对象。比如用3DMAX等工具做好一个模型后,我们希望能够在自己的程序中使用它。一般使用这些工具的导出功能导出特定的文件,然后读取其中我们感兴趣的部分,再把这些感兴趣的数据在我们的程序中组织好就可以了。利用OpenGL来表现静态模型是很简单的。这里为了简单起见,模型对象文件为txt文本,只包含了模型的顶点个数,面个数,顶点坐标,索引信息。当然在一些复杂转载 2013-04-27 12:26:06 · 876 阅读 · 1 评论 -
openGL CG3-Pixel Lighting
在上一篇教程中介绍了phong model下的一般光照,并且用Cg着色语言实现了固定渲染管线中gouraud shading光照效果。由于是基于vertex的光照,虽然采用gouraud shading要比flat shading效果好的多,但是和phong shading的效果相差很大。这里大家要注意的是,phong model和phong shading的区别。上一篇教程所讲的光照模型叫pho转载 2013-04-27 12:31:22 · 1128 阅读 · 0 评论 -
openGL CG5 – Environment Mapping (环境贴图)
利用物体材质specular属性来模拟高反光的物体是不够的。高反光的物体通常可以在表面反射出周围的物体,这样的效果需要通过环境贴图来实现。这篇教程将介绍如何利用Cg进行环境贴图。环境反射的原理很简单,一个光滑的物体表面可以根据我们观察的不同角度反射出不同位置的环境。即物体表面一点反射的颜色和该点的法线,观察视线和反射视线有关系。Fig1 观察视线和反射Fig1中显示了它们的关系转载 2013-04-27 13:31:53 · 1709 阅读 · 0 评论 -
OpenGL变换
OpenGL变换是本篇的重点内容,它包括计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换,以及针对OpenGL的特殊变换概念理解和用法,如相机模拟、矩阵堆栈等。学好了这章,才开始真正走进三维世界。1、从三维空间到二维平面 1.1 相机模拟 在真实世界里,所有的物体都是三维的。但是,这些三维物体在计算机世界中却必须以二维平面物体的形式表现出来。那么,这些物体是转载 2013-04-27 12:22:21 · 992 阅读 · 0 评论 -
Cube Mapping
1.传统的2D纹理映射是将物体表面的某个点和一个2维坐标系中某个点对应的一种映射。环境映射(Environment Mapping)是将物体表面的某个点和一个3维空间中的某个向量对应的一种映射。 2.Cube Mapping是一种环境映射,其他的环境映射还有Sphere Mapping和Dual Daraboloid Mapping。Sphere Mapping在OpenGL可以通过指转载 2013-04-27 12:28:58 · 893 阅读 · 0 评论 -
OpenGL之自动纹理坐标生成
OpenGL中有两种方法为顶点(Vertex)指定纹理坐标: 1.由人工给每个顶点分配坐标。可以通过函数glTexCord*()来完成。 2.由OpenGL自动为每个顶点分配坐标。这个任务由函数glTexGen*()来完成。一开始,我对glTexGen*()这个函数并不是十分的理解,不知道OpenGL到底是怎样自动生成纹理坐标的。查阅了相关的资料,才开始有一点明白:要完成自动纹理坐转载 2013-04-27 12:27:44 · 2803 阅读 · 0 评论