摘要: 这个系列专注于使用C++和OpenGL在windows平台上开发2D游戏,项目目标是在系列结束后能开发出一个类似俄罗斯方块的游戏。本系列分为3篇文章:
第一部分:涉及win32消息循环,窗口创建和OpenGL的搭建,并且你将会学习如何绘制一些简单的图形。
第二部分:涉及资源处理和简单动画的显示
第三部分:将前面的内容包含进来,并且讨论游戏逻辑。
阅读全文
摘要: 作者在这一篇中将解释如何去跟踪折射光线。这将涉及到在相交点处产生新的光线,并且计算新光线的方向。此外,作者还将运用Lambert-Beer 定律来解释光线在物体内部的吸收情况。最后作者将展示如何加入反锯齿的效果,并且如何对光线跟踪器进行加速优化。
阅读全文
摘要: 个人先对第一篇的流程做个总结,从一个固定的光源点向一定范围发射出一些主要的光线,想象光线前方有一个巨大的虚拟平面,那么我们要做的就是决定这个虚拟平面上每个像素点的颜色是什么。如何决定呢?很简单,我们跟踪光线前进,看光线会最先与前面场景中哪个几何体发生相交,那么就根据相交点来决定虚拟平面上对应的点的颜色值(比如上一篇中就利用了相交点处几何体的材质颜色与灯光颜色,还加上了散射因子来决定对应的像素点的颜色)。
阅读全文
摘要: 从上面我们得到一个启示:与其等待光源发射一条光线穿过一个目前颜色还是黑色的像素,不如我们自己从照相机发射光线去穿过平面的每个像素,去观察这些光线能击中几何体上的哪些像素。
阅读全文
摘要: 作为OpenGL ARB写的Official Guide,确实值得学习OpenGL的开发者反复研读。我没有买第5版,一直都是读的第4版,两版的差异我还不得而知,而OpenGL3也即将正式发布了。
阅读全文
摘要: GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定 了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。
阅读全文