随笔分类 - OpenGL
摘要:在这篇中两个点。 一个是raw格式图片的贴图: 一个双重贴图即部分覆盖,图像数据,以及两个贴图的开始部分,范围以及模式是重点: 下面为代码,同样修改部分位于双行星号内。 1 /**************************************************************
阅读全文
摘要:Bézier curve经常应用于计算机图形学邻域。 三次Bézier curve演示: p为点的坐标。 一次Bézier curve: 二次Bézier curve: 三次Bézier curve: 每次对每个点进行处理。未处理时: 下面为代码。同样修改部分位于双行星号内。 1 /********
阅读全文
摘要:这次的代码没有按照辅导代码中的来。 VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN控制长方体旋转,W/S/A/D/Q/E控制球移动,小键盘的8/5/4/6/7/9控制长方体移动,I/K/J/L/U/O控制光源移动。 在InitGLObject()函数中使用到的readObject()函
阅读全文
摘要:这一章实现了物体在地面上的投影,以及物体表面灯光闪烁的效果。 我在原本的代码上添加了些功能,W/S/A/D和UP/DOWN/LEFT/RIGHT为左右前后移动,实现了小球在地面滚动的效果。 物体的投影,其实为在其Y轴的另一个物体相对; 物体表面的闪烁效果其实为另一张贴图,两个效果都使用了混合透明效果
阅读全文
摘要:这是一个小demo,读取物体的顶点坐标值生成3D图像。 三个物体顶点坐标文件。 1 Vertices: 486 2 -0.106 1.593 2.272 3 -0.106 2.036 2.228 4 -0.193 2.028 2.228 5 -0.276 2.002 2.228 6 -0.353 1
阅读全文
摘要:这一篇主要说的是,怎样实现在窗口中裁剪一个小的视图窗口(即glScissor()函数)?以及对glGetString()函数的应用。 在本文中,用到的贴图材质是TGA格式图片,相对于JPG格式,会更加清晰,因使用不失真的压缩。不了解TGA格式图片的可以看看这篇。基于对TGA格式的了解,具有独有的一个
阅读全文
摘要:这一章是在18章的基础上建立的,主要说的是镜面反射。 使用两张相同的图片,对scene和object实现贴图。 在InitGL()函数中,gluNewQuadric()创建一个曲面物体指针赋给quadratic。gluQuadricNormals()函数设置法线风格,默认为GLU_SMOOTH,对每
阅读全文
摘要:这几天杂事太多,没及时更新,抱歉。 如何控制图形加速器实现多重纹理? 如何实现凹凸纹理贴图? 如何在混合色彩渲染的场景上实现标志浮动? 如何多重渲染? 如何高效地矩阵转换? 本章主要说的是多重纹理,即凹凸纹理。 isInString()函数在特定的字符串中搜寻特定的字符串,更高效的算法可以用KMP算
阅读全文
摘要:这是一个简单的小游戏,类型相当于amidar,不过也有1000行,手困眼花......UP\DOWN\LEFT\RIGHT控制,SPACE重新开始。 在TimerInit()函数中,QueryPerformanceFrequency()函数查询性能计数器的频率。QueryPerformanceCou
阅读全文
摘要:某物体隐藏于某物体后,隐约可以看出大概。 在DrawGLScene()函数中,先画出位于后面的物体,当然具有较深深度。 在绘制前面物体时,为了可以隐藏(即和后面物体混合)开启混合模式且关闭深度测试。贴图纹理的位置坐标可以变换,即可以使前面的贴图图实现上下、左右、远近移动、波动等。 在开启GL_BLE
阅读全文
摘要:粒子散射做出来是比较酷炫的,每个粒子为一个结构体。 活动状态、生命周期、消褪时间、颜色、位置坐标、方向坐标、重力方向都有,可以任意调节。 当时在绘制函数中发现原文用的是三角形,为什么不用四边形? 因为用Quads很慢,现在的GPU都呈现三角形,尽力呈现(其实为相似)四边形。原因此处。 在InitGL
阅读全文
摘要:quadratic可以做许多有趣的事,在声明全局变量时,GLUquadricObj为quadratic(二次曲面)的指针。在InitGL()函数中,glLightfv()函数已经见过好多次了,镜面反射,光线追踪都需要用到。gluNewQuadric()函数创建一个quadratic。gluQuadr
阅读全文
摘要:2D字体贴图的贴法和一般的贴图纹理有点小区别,可以先看看我们需要用到的字体贴图纹理。 在BuildFont()函数中,我们对图片进行分割为16X16,则创建256个列表。这段代码表示每次把图片上的一个符号存进列表中。 在glPrint()函数中我们对先前创建的256个列表进行选择,是否是大小写的代码
阅读全文
摘要:这一篇主要说的是雾气。雾气模型,颜色等。 GLuint fogMode[] = {GL_EXP, GL_EXP2, GL_LINEAR};GLfloat fogColor[4] = {0.5, 0.5, 0.5, 1.0}; GL_LINEAR公式为: GL_EXP公式为: GL_EXP2公式为:
阅读全文
摘要:glTexGeni()函数为控制纹理坐标的生成。 代码如下,同样修改的部分位于双行星号内。 Thanks for Nehe's tutorials, this is his home.
阅读全文
摘要:承接上一节,2D字体转换为3D字体,将wglUseFontBitmaps()换为wglUseFontOutlines(),再做一些简单的修改即可。 因为在InitGL()函数内添加了 glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); glEnable(GL_CO
阅读全文
摘要:如何在屏幕上显示字体,同时颜色变换且是动态移动的? CreateFont()是建立字体主要的函数,在MSDN中有详细的解释。同时的glGenLists()函数创建空的显示列表,主要是为了表示26个字母。SelectObject()函数以及DeleteObject()函数是对具体字体对象的操作。 wg
阅读全文
摘要:若同样的物体需要创建多次时,并在不同的位置,且需要不同的着色etc,同时不能太麻烦......该怎么弄? 显示列表,它不仅会加快速度,而且会减少代码量。通过显示列表,一个物体只被创建一次,且可以纹理贴图,着色etc。需要用到这个物体时,只需要glCallList()就可以了。 下面这段代码不仅可以创
阅读全文
摘要:这一节主要是贴图材质的波动,运用正弦函数控制像素点的深度,每次绘制完再进行少量转换。 代码中的glPolygonMode()函数为贴图材质的正反面显示形式的描述,可为线条即网格,点和填充即原图。 代码如下,同样修改内容在双行星号内。 Thanks for Nehe's tutorials, this
阅读全文
摘要:这一节主要说的是camera的移动以及视角的旋转问题。 我在原本代码的基础上做了添加和修改,将移动方向的前、后、左、右改为W、S、A、D,并将视角旋转的向上、向下、向左和向右改为UP、DOWN、LEFT、RIGHT。最后还添加了下蹲为Ctrl键和跳跃SPACE键(空格),其实就是CS里的几个虚拟键的
阅读全文

浙公网安备 33010602011771号