随笔分类 - OpenGL
摘要:认认真真地把这教程过一遍还真是费事啊... 终于到最后一章了,鼠标拖动可实现物体旋转。 下面为代码, #ifndef _ArcBall_h #define _ArcBall_h // Only support assertions in debug builds #ifdef _DEBUG #inc
阅读全文
摘要:cg工具包下载地址。头文件、lib文件和dll文件放在指定的位置。 struct appdata { float4 position : POSITION; float4 color : COLOR0; float3 wave : COLOR1; }; struct vfconn { float4
阅读全文
摘要:全屏抗锯齿通过采样算法,将图形边缘会造成锯齿的这些像素与其周围的像素作一个平均的运算,增加像素的数目以达到像素之间平滑过渡的效果,不过有的地方可能会显得模糊。使用了两个头文件的扩展, 代码如下,抗锯齿的实现叫做多重采样。 bool WGLisExtensionSupported(const char
阅读全文
摘要:这一节主要说的是VBO. VBO初始化时的代码, BuildVBOs()函数, 下面为代码,顺便改了下方向键,W/S/A/D/UP/DOWN/LEFT/RIGHT。 #ifndef GL_FRAMEWORK_INCLUDED #define GL_FRAMEWORK_INCLUDED #includ
阅读全文
摘要:这样的光晕如何实现? 其实也就是几个贴图。变着法贴,比如,变大变小贴,变着颜色贴,变着透明度贴,换着距离贴。 下面为代码,其中用到了一些很简单的数学知识。 #ifndef AFX_GLFONT_H__F5069B5F_9D05_4832_8200_1EC9B4BFECE6__INCLUDED_ #d
阅读全文
摘要:FreeType一个字体库,主要体现FreeType抗锯齿效果。 图中第一行为ttf字体,第二行为点阵字体,各有各的好处,不过ttf用的比较多。可以看出第一行字体的效果更好。 这是用到的库文件,放到了我的GitHub,下载地址。 配置方法即文件放置位置还是按以前的来,在VS2015中,项目属性->链
阅读全文
摘要:一个屏幕分为四个小窗口,如下图。 UpdateTex()为绘制函数, 在绘制完所有迷宫时,会设置标题题目“SetWindowText()函数”且重置贴图数据“ZeroMemory()函数”,最后重新绘制。 在Initialize()函数中,对quadric贴图时,需要先对quadric贴图坐标设置。
阅读全文
摘要:雾气的实现在Cool Looking Fog中提到过,不过怎么实现雾气随距离的变化? 在Initialize()函数中首先设置fog的褪色,颜色,开始透明度和结尾透明度等等。如下, glFogi()函数中的参数在Main文件头定义了, 在画雾气时,也就是Draw()函数中,glFogCoordfEX
阅读全文
摘要:这一节为物理模拟绳子。在上一节中,三种物理模拟的基本运动作为这一节的基础。(直线运动, 弹性运动,万有引力下运动) 让绳子拥有弹性感,可以在每个质量节点中加入很小长度的弹簧。弹簧上力的变化可参考上节的弹性运动。 基本上所谓的重点就是绳子模拟类了,RopeSimulation类继承Simulation
阅读全文
摘要:这一节说明了三种运动,直线运动,弹性运动和万有引力下运动。本节对三种运动在每个点上力做了分析。 Physics.h文件中定义了四个类,Vector3D类重载了基本的操作运算符和求解法向量函数。Mass类有基本的质量m、位置position、速率velocity和力force,及牛顿第一定律。Simu
阅读全文
摘要:未贴图前,每个蝴蝶都是由两个三角形组成,于对角线折叠,相当于翅膀扇动,每次变换对角顶点的坐标就可以。 这次是加载资源文件,加载过后, 下面为代码, #ifndef GL_FRAMEWORK_INCLUDED #define GL_FRAMEWORK_INCLUDED #include <window
阅读全文
摘要:卡通人物的贴图及阴影实现。 在抗锯齿方面,OpenGL中只需glEnable(GL_LINE_SMOOTH)。 对于一个向量的旋转,直接乘以旋转矩阵可以得出。下面为代码, 灯光设置为Z轴正方向(0,0,1),然后计算其法向量normal,接着再和旋转后的向量来个点积得到shade值。若小于零,就设置
阅读全文
摘要:这种效果由ambient、position、diffuse和specular几种光在其背景贴图上实现。 在RenderToTexture()函数中ProcessHelix()函数为实现弹簧的光线效果,而在Draw()函数中的ProcessHelix()函数为实现弹簧实体。 RenderToTextu
阅读全文
摘要:STL是CAD软件中出来的一种3D模型文件格式,wiki已经解释的很清楚了。 STL文件两种格式,ASCII STL和Binary STL。 ASCII STL,每一个facet由7行数据组成,outer loop后面三个顶点的顺序沿法线矢量逆时针排序,格式如下: Binary STL,起始有80个
阅读全文
摘要:AVI视频文件读取,首先得建个AVI(AVISTREAMINFO)文件流指针,具体的结构, 在flipIt函数__asm关键字用于调用内联汇编程序,在C/C++语法合法时出现,不能单独出现,后跟汇编指令,一组大括号中的命令或至少时空括号。 在OpenAVI函数中,AVIFileInit()函数初始化
阅读全文
摘要:漂亮的地图如何加载? 以二进制格式读取raw文件1024*1024个unsigned char,假定读进指针变量pHeightMap。 颜色比例, 高度比例类似(最后便是越高越亮), 点击屏幕后会由QUADS切换为LINES,原因在WndProc()函数中, gluLookAt()函数设置camre
阅读全文
摘要:这一篇主要讲的是TGA文件的加载,TGA文件分为压缩与未压缩的两种。 uncompressed和compressed的标头是不一样, 未压缩的TGA文件,在最后直接读取imageData就可以了,期间在将RGB转换为BGR时,做了加速。如下, 压缩过的TGA文件,在读取数据时,需要对每个像素点处理。
阅读全文
摘要:一个射击类的小demo。分为三个文件,Previous.h、Previous.cpp和Main.cpp。 在Previous.cpp的CreateWindowGL中新增了AdjustWindowRectEx()函数,可以根据客户端的期望大小计算窗口大小,矩形通过函数创建一个理想大小的窗口。 Choo
阅读全文
摘要:这一章主要是对.ms3d格式文件的读入。MilkshapeModel.h和MilkshapeModel.cpp给出详细的步骤。 在Molde类中定义Mesh,Material,Triangle,Vertex。Triangle填充Mesh,Material贴图。 在DrawGLScene()函数内,g
阅读全文
摘要:这段代码花了我近一周时间学习。 球体之间的相互碰撞,球体与墙面之间的相互碰撞,球体与木桩之间的相互碰撞。小键盘+/-控制球体的timestep,也就是速度。UP/DOWN/LEFT/RIGHT控制camera,W/S/A/D控制位移。 F2控制camera跟进某个小球,可观察小球的碰撞路径。 一、碰
阅读全文

浙公网安备 33010602011771号