代码改变世界

随笔分类 -  OPENGL

左右手坐标系的形象说明

2011-06-22 11:00 by bingcaihuang, 408 阅读, 收藏, 编辑
摘要: 先看看左右手坐标系的实例图:这个不用多说了。下面看看左右手坐标系互换时,三维空间的物体前后之对比:得到的结果好比是一个物体关于XY轴所构成的平面作了镜像转换。 阅读全文

OpenGL光源位置

2011-01-26 16:40 by bingcaihuang, 6961 阅读, 收藏, 编辑
摘要: OpenGL中的光照模型是一种简化的模型,这样做可以提高处理的实时性,因为复杂的光照模型或许能带来更好的光照效果,但是对系统的消耗也是很大的,况且这种简化的模型在大多数情况下也能得到不错的光照效果。 在openGL中,光照包括很多问题,比如定义光源、指定材质属性、确定光照模型等。这些问题经过看书基本都能理解,但是在openGL中控制光源的位置或许并不是个简单的问题,我花了不少时间,看了不少资料,包括网友们的文章,openGL的红宝书等。最后我认为我弄明白了如何在openGL中控制光源的位置,现在把它们总结一下。如何控制光源位置 在openGL中,光源位置的控制也是通过模型视图矩阵实现的,包括平 阅读全文

GLUI—很好的辅助OPENGL的库

2010-12-01 16:14 by bingcaihuang, 2221 阅读, 收藏, 编辑
摘要: GLUI User Interface LibraryWhat is GLUI?GLUI is a GLUT-based C++ user interface library which provides controls such as buttons, checkboxes, radio buttons, and spinners to OpenGL applications. It is w... 阅读全文

GLUI Use Interface Library

2010-12-01 16:13 by bingcaihuang, 593 阅读, 收藏, 编辑
摘要: 今天搜索资料无意中搜到一个基于opengl的glut的3D图形控件库,采用C++设计,glui。glut是OpenGL应用工具包(OpenGL Utility Toolkit),它为OpenGL提供了一个简易的窗口平台,使程序员不用过多的关心与平台相关的窗口系统. 建立工程时,我们一般都建立控制台程序(在vc6中即console win32 application)来使用glut库.但是在控制台程... 阅读全文

BMP图像文件格式

2010-12-01 16:12 by bingcaihuang, 355 阅读, 收藏, 编辑
摘要: 第一部分为位图文件头BITMAPFILEHEADER,它是一个结构体,其定义如下:typedef struct tagBITMAPFILEHEADER{WORDbfType;//文件类型,在WINDOWS系统中为“BM”DWORDbfSize;//文件大小WORDbfReserved1;//保留字WORD bfReserved2;//保留字DWORDbfOffB... 阅读全文

OpenGL 位图与图像 (转载)

2010-12-01 16:12 by bingcaihuang, 808 阅读, 收藏, 编辑
摘要: OpenGL基础图形编程(二)十一、位图与图像11.1、位图  11.1.1 位图(Bitmap)与字符(Font)  位图是以元素值为0或1的矩阵形式存储的,通常用于对窗口中相应区域的绘图屏蔽。比如说,当前颜色设置为红色,则在矩阵元素值为1的地方象素用红色来取代,反之,在为0的地方,对应的象素不受影响。位图普遍用于字符显示,请看下面例子:  例11-1 位图字符例程(font.c)  #incl... 阅读全文

OPENGL WIN32 框架

2010-12-01 16:10 by bingcaihuang, 464 阅读, 收藏, 编辑
摘要: 为方便opengl程序的编写,特总结了网上的几种win32下框架,还有NEHE,QT环境下框架等。VS2005设置如下图所示:1.建立win32工程2.选择空工程3.代码拷贝上以后修改字符集经过测试以下两种字符集都可以用,有什么分别待测试以后才能下结论。/** This Code Was Created By Jeff Molofee 2000* A HUGE Thanks To Fredric ... 阅读全文

如何在windows配置高级OpenGL的环境

2010-12-01 16:09 by bingcaihuang, 810 阅读, 收藏, 编辑
摘要: 关于如何配置高级OpenGL环境,下文是从网上扒拉下来的。一、 提要以前在《 Win32 OpenGL 编程(1)Win32下的OpenGL编程必须步骤》一文中提供了一个较为完整的Win32下编写OpenGL程序的框架,但是仅仅提到的是此Win32框架所需要的一些东西,事实上由于MS为了维护自家的DirectX,所以很早就放弃了对OpenGL的支持,在Windows XP平台上实现的OpenGL还... 阅读全文

OpenGL笔记:多视口(Multiple Viewports)

2010-12-01 16:09 by bingcaihuang, 2704 阅读, 收藏, 编辑
摘要: /视口一左下角glEnable(GL_SCISSOR_TEST);glScissor(0,0,m_width/2-1,m_height/2-1);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glDisable(GL_SCISSOR_TEST);glViewport(0,0,m_width/2-1,m_height/2-1);glMatrixMo... 阅读全文

PPM图像格式(Portable Pixelmap)

2010-12-01 16:08 by bingcaihuang, 640 阅读, 收藏, 编辑
摘要: 今天得知Minolta 3D scans(Konica的一款三维扫描仪)的数据是两部分,一是反映Shape的后缀为.abs文件,另一个是反映Texture的后缀为.ppm的文件。下面就是ppm文件格式的简介。PPM灰度文件:文件头由3行文本组成,可由fgets读出1)第一行为“P2",表示文件类型2)第二行为图像的宽度和高度3)第三行为最大的象素值255接下来是图像数据块。按行顺序存储... 阅读全文

glBlendFunc()的参数

2010-12-01 16:08 by bingcaihuang, 485 阅读, 收藏, 编辑
摘要: 看到OPENGL混合一章,感觉glBlendFunc函数参数比较难以理解的一环:OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜 色。(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算... 阅读全文

glTexParameteri()纹理过滤函数

2010-12-01 16:07 by bingcaihuang, 642 阅读, 收藏, 编辑
摘要: glTexParameteri()纹理过滤函数.图象从纹理图象空间映射到帧缓冲图象空间(映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真),这时就可用glTexParmeteri()函数来确定如何把纹理象素映射成像素.你这里的参数功能说明如下:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);GL_TEXTURE_... 阅读全文

OPENGL创建圆形天空盒

2010-12-01 16:06 by bingcaihuang, 5835 阅读, 收藏, 编辑
摘要: 在OpenGL中模拟天空,是制作场景的必要技术。一般天空的构造可以使用天空盒或者一个球体贴上纹理来模拟。天空盒是绘制一个四方体,然后在各个面贴上贴图。这就要求6个面的贴图要有机结合,不然会出现缝隙或者不连续。这种技术可以模拟高山等。本文提供的则是天空顶技术。就是绘制一个球体然后赋予材质,可以很好的达到模拟天空的效果。使球体慢慢移动,就可以模拟云彩流动的效果。封装成一个Sky类,可以直接调用。在使用... 阅读全文

OpenGL发展历程与扩展

2010-12-01 16:05 by bingcaihuang, 362 阅读, 收藏, 编辑
摘要: 在计算机发展初期,人们就开始从事计算机图形的开发,但直到20世纪80年代末、90年代初,三维图形才开始迅速发展。于是各种三维图形工具软件包相继推出,如GL,RenderMan等。随着计算机技术的迅速发展,GL已经进一步发展成为OpenGL,现在OpenGL被认为是高性能图形和交互式视景处理的标准。这些三维图形工具软件包有些侧重于使用方便,有些侧重于绘制效果或与应用软件的连接,但没有一种软件包能在交... 阅读全文

OpenGL库函数列表

2010-12-01 16:02 by bingcaihuang, 343 阅读, 收藏, 编辑
摘要: OpenGl核心函数库glAccum 操作累加缓冲区glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形glAlphaFunc允许设置alpha检测功能glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中glArrayElement 定义一个被用于顶点渲染的数组成分glBegin,glEnd 定义一个或一组原始的顶点glBindTex... 阅读全文

OpenGL的回调函数

2010-12-01 16:02 by bingcaihuang, 1079 阅读, 收藏, 编辑
摘要: OpenGL的回调函数收藏void glutDisplayFunc(void (*func)(void));注册当前窗口的显示回调函数参数:func:形为void func()的函数,完成具体的绘制操作这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态中恢复,或者由于调用glutPostRedisplay()函数要求GLUT更新时,执行func参数指定的... 阅读全文

关于opengl的相关函数库

2010-12-01 16:01 by bingcaihuang, 330 阅读, 收藏, 编辑
摘要: OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。从图1可以看出,gl是核心,glu是对gl的部分封装。glx、agl、wgl是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。下面逐... 阅读全文

OPENGL函数说明

2010-12-01 16:01 by bingcaihuang, 517 阅读, 收藏, 编辑
摘要: 一、初始化void glutInit(int* argc,char** argv)这个函数用来初始化GLUT库。对应main函数的形式应是:int main(int argc,char* argv[]);这个函数从main函数获取其两个参数。void glutInitWindowSize(int width,int height);void glutInitWindowPosition(int x... 阅读全文

VS2005+OPENGL

2010-12-01 16:00 by bingcaihuang, 393 阅读, 收藏, 编辑
摘要: VS2005+OPENGL收藏1.选择编译环境,选择VS2005作为学习OPENGL的环境;2.配置OPENGL:项目 -->选择属性 C\C++-->preprocessor-->preprocessor definition添加GLUT_BUILDING_LIB,中间用分号隔开,然后点击linker-->input--> additional dependenci... 阅读全文

opengl常见问题

2010-12-01 16:00 by bingcaihuang, 1457 阅读, 收藏, 编辑
摘要: opengl常见问题收藏01.相机如何在OpenGL中工作?02.我怎样才可以移动我的视点,或者是相机,在我的场景中?03.我的相机该去哪,模型视点矩阵还是投射矩阵?04.我该怎么执行一个缩放操作?05.给出当前模型视点矩阵,我怎么才可以确定相机的物体空间位置?06.我怎样才可以使照相机在我的场景中围绕一个点转?07.如何自动计算一个观察点可以显示全部的场景?(我知道边界球体和向上分量(bound... 阅读全文