摘要:这个系列专注于使用C++和OpenGL在windows平台上开发2D游戏,项目目标是在系列结束后能开发出一个类似俄罗斯方块的游戏。本系列分为3篇文章:
第一部分:涉及win32消息循环,窗口创建和OpenGL的搭建,并且你将会学习如何绘制一些简单的图形。
第二部分:涉及资源处理和简单动画的显示
第三部分:将前面的内容包含进来,并且讨论游戏逻辑。
阅读全文
摘要://=============================================================================// Desc: 主程序源文件//=============================================================================#include "dxstdafx.h"#inclu...
阅读全文
摘要://=============================================================================// Desc: 顶点雾化效果//=============================================================================#include //---------------...
阅读全文
摘要:Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 通过矩阵变换实现绕三个坐标轴的特定角度的旋转:Code highlighti...
阅读全文
摘要: 作者在这一篇中将解释如何去跟踪折射光线。这将涉及到在相交点处产生新的光线,并且计算新光线的方向。此外,作者还将运用Lambert-Beer 定律来解释光线在物体内部的吸收情况。最后作者将展示如何加入反锯齿的效果,并且如何对光线跟踪器进行加速优化。
阅读全文
摘要:个人先对第一篇的流程做个总结,从一个固定的光源点向一定范围发射出一些主要的光线,想象光线前方有一个巨大的虚拟平面,那么我们要做的就是决定这个虚拟平面上每个像素点的颜色是什么。如何决定呢?很简单,我们跟踪光线前进,看光线会最先与前面场景中哪个几何体发生相交,那么就根据相交点来决定虚拟平面上对应的点的颜色值(比如上一篇中就利用了相交点处几何体的材质颜色与灯光颜色,还加上了散射因子来决定对应的像素点的颜色)。
阅读全文
摘要: 从上面我们得到一个启示:与其等待光源发射一条光线穿过一个目前颜色还是黑色的像素,不如我们自己从照相机发射光线去穿过平面的每个像素,去观察这些光线能击中几何体上的哪些像素。
阅读全文
摘要:晚上读了一篇paper,《Cartoon Rendering of Smoke Animations》,打算用这篇文章作为非真实感的阅读作业,明天准备下presentation,暂时记录下文章的要点 说到画烟雾,画家一般会画一个白色的漩涡,真实感图形里面则会根据流体动力学的方程去计算,以反映其内部复杂的气体和光学作用,而对于非真实感来说(尤其是动画),我们更偏爱让烟具有...
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/* generates contours using marching squares *//* region size */#define X_MAX 1.0 #define Y_MAX 1.0 #d...
阅读全文
摘要:/**//* two-dimensional Sierpinski gasket *//**//* generated using randomly selected vertices *//**//* and bisection */#include void myinit(){/**//* attributes */...
阅读全文
摘要:26)光照模型有4部分:全局环境光,近视点或远视点,双面光照,镜面反射颜色是否和环境颜色,散射颜色分开。要指定全局环境光,可以如下: GLfloat ambient[] = {0.3,0.3,0.3,1.0};glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient); 顶点的镜面反射亮度取决于该点的法线,顶点相对于光源的方向以及顶点相对于视点的方向。要使...
阅读全文
摘要:作为OpenGL ARB写的Official Guide,确实值得学习OpenGL的开发者反复研读。我没有买第5版,一直都是读的第4版,两版的差异我还不得而知,而OpenGL3也即将正式发布了。
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include #include #include void InitGL(GLvoid){ glClearColor(1.0,1.0,1.0,1.0);}void triang...
阅读全文
摘要:#include #include #include /**//*声明四个二次曲面物体*/GLUquadricObj *quadObj1;GLUquadricObj *quadObj2;GLUquadricObj *quadObj3;GLUquadricObj *quadObj4;static float light_ambient[] = {0.1,0.1,0.1,1.0};static flo...
阅读全文
摘要:GLvoid COpenGLDemoView::glPrint(GLint x, GLint y, char *string, int set) // Custom GL "Print" Routine{ if (set>1) { set=1; } glBindTexture(GL_TEXTURE_2D, texture...
阅读全文
摘要:我们将从设置保存雾的信息的变量开始。变量fogMode用来保存三种类型的雾:GL_EXP,GL_EXP2和GL_LINEAR。变量fogfilter将用来表示我们使用的是哪种雾类型。变量fogColor保存雾的颜色。还加了一个布尔类型的变量gPressed用来记录'g'键是否被按下。 bool gPressed; GLuint fogMode[3]; // Storage...
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int COpenGLDemoView::DrawGLScene() {// Here's Where We Do All The Dr...
阅读全文
摘要:void COpenGLDemoView::glDrawString(unsigned char *str){ GLYPHMETRICSFLOAT pgmf[1]; HDC hDC=wglGetCurrentDC(); HFONT hFont; LOGFONT lf ; memset(&lf,0,sizeof(LOGFONT)); lf.lfHeight = 1...
阅读全文
摘要:成员变量区: GLuint base; GLfloat cnt1; GLfloat cnt2; 成员函数区:GLvoid COpenGLDemoView::glPrint(const char *fmt, ) // Custom GL "Print" Routine{ char text[256]; ...
阅读全文
摘要:我们用glNewList()命令来开始构造显示列表。第二个参数GL_COMPILE告诉OpenGL我们想预先在内存中构造这个列表,这样每次画的时候就不必重新计算怎么构造物体了。GL_COMPILE类似于编程。在你写程序的时候,把它装载到编译器里,你每次运行程序都需要重新编译。而如果他已经编译成了.exe文件,那么每次你只需要点击那个.exe文件就可以运行它了,不需要编译。当OpenGL编译过显示列...
阅读全文