OpenGL
文章平均质量分 78
yearafteryear
这个作者很懒,什么都没留下…
展开
-
VS2012下基于Glut OpenGL连续点围成曲面正面与背面示例程序:
OpenGL下连续点围成的曲面,当连续点是逆时针时围成的曲面是正面,反之则是反面。下面的程序来测试是不是这样。我们的程序在曲面是正面时使用颜色填充,背面时使用曲线描轮廓。按键盘的UP,DOWN,LEFT,RIGHT按键可以从不同角度查看该图形。源代码如下所示:// GlutBackAndFrontDemo.cpp : 定义控制台应用程序的入口点。//#include原创 2013-06-08 22:53:29 · 2377 阅读 · 1 评论 -
VS2012下基于Glut OpenGL显示一个窗口
在VS2012下使用glut来建一个窗口,使用的是Win32控制台程序,演示效果如下所示:源代码如下:#include "stdafx.h"#include //获取屏幕的宽度GLint SCREEN_WIDTH=0;GLint SCREEN_HEIGHT=0;//设置程序的窗口大小GLint windowWidth=400;GLint windowHeight=原创 2013-06-05 21:44:45 · 3492 阅读 · 1 评论 -
VS2012下基于Glut OpenGL绘制虚线示例程序:
在VS2012下使用glut绘制一系列虚线的示例程序,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形:glLineStipple用于设置直线的点线模式,其有两个参数第二个参数PATTERN是一个16进制的数,或者是转换为二进制的16位序列(若不足16位,以0补完)如glLineStipple (1, 0x0101);原创 2013-06-08 07:35:22 · 2781 阅读 · 0 评论 -
VS2012下基于Glut OpenGL glScissor示例程序:
剪裁测试用于限制绘制区域。我们可以指定一个矩形的剪裁窗口,当启用剪裁测试后,只有在这个窗口之内的像素才能被绘制,其它像素则会被丢弃。换句话说,无论怎么绘制,剪裁窗口以外的像素将不会被修改。有的朋友可能玩过《魔兽争霸3》这款游戏。游戏时如果选中一个士兵,则画面下方的一个方框内就会出现该士兵的头像。为了保证该头像无论如何绘制都不会越界而覆盖到外面的像素,就可以使用剪裁测试。可以通过下面的代码来启用或禁原创 2013-06-24 22:38:23 · 2792 阅读 · 0 评论 -
Vs2012 下基于Glut OpenGL开发环境建立
在http://user.xmission.com/~nate/glut.html网站上下载glut-3.7.6-bin.zip,解压后可以看到下面几个文件:glut.defglut.hglut32.dllglut32.libREADME-win32.txt1.将glut.h文件拷贝到C:\Program Files\Windows Kits\8.0\Include\u原创 2013-06-05 21:07:49 · 2659 阅读 · 0 评论 -
VS2012下基于Glut OpenGL glEdgeFlag示例程序:
glEdgeFlag (GLboolean flag)表示一个顶点是否应该被认为是多边形的一条边界边的起点。flag为GL_TRUE后面的点都被认为是边界上的点,flag为GL_FALSE则之后的点不是边界上的点。Demo使用菜单来决定四角星的四个凹进去的点是否是边界边的起点。当菜单选中凹进去的四个点为边界上的点时,使用多边形的填充模式为GL_LINE时如下图所示:当菜单选中凹原创 2013-06-24 21:58:29 · 2164 阅读 · 0 评论 -
VS2012下基于Glut OpenGL glDepthMask示例程序:
glDepthMask (GLboolean flag)函数可以决定将他之后的数据不写入深度缓冲区。当flag为GL_TRUE时之后的数据不写入深度缓冲区,即使启用了深度缓冲区测试功能。使用上一个Demo:点击打开链接上加入该功能:未启用glDepthMask时如下所示:单击鼠标右键弹出相应菜单:选菜单On启用glDepthMask后看到坐标系的Z轴箭头已经看不见了,因原创 2013-06-24 22:19:41 · 2841 阅读 · 1 评论 -
VS2012下基于Glut OpenGL GL_STENCIL_TEST示例程序:
模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较。根据测试的结果,对模板缓冲区中得这个值进行相应的修改。Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试能够通过。模板测试最常用的用途就是屏蔽掉屏幕中的一些不规则区域,避免在这些区域中进行绘图。模板测试过程:(1)如果使用glut工具包(或者freeglut),要这样进行指定:gl原创 2013-06-25 23:18:20 · 4893 阅读 · 0 评论 -
VS2012下基于Glut OpenGL显示一些立体图形示例程序:
Glut下提供了一些现成的绘制立体的API,如glutWireSphere绘制球,glutWireCone绘制椎体,glutWireCube绘制立体,glutWireTorus绘制甜圈,glutWireTeapot绘制茶壶,glutWireOctahedron绘制八面体。 Demo程序利用这些API绘制相应的立体,单击鼠标右键在弹出的菜单里可以选择需要绘制的立体以及是wire还是soli原创 2013-06-25 23:45:31 · 24666 阅读 · 4 评论 -
VS2012下基于Glut 绘制矩形管示例程序:
使用GL_QUADS来绘制一个矩形空心管,其中用到了glFrontFace函数。可以按键盘UP,DOWN,LEFT,RIGHT按键旋转坐标系查看3D图形。也可以通过鼠标单击右键弹出的菜单选择正交和透视投影以及是否显示坐标轴。void glFrontFace(GLenum mode);作用是控制多边形的正面是如何决定的。在默认情况下,mode是GL_CCW。mode的值为:GL_CCW原创 2013-06-28 22:31:14 · 2014 阅读 · 0 评论 -
VS2012下基于Glut 绘制立方体示例程序:
使用glBegin(GL_QUADS)绘制六个侧面来组成一个立方体;并使用glFrontFace(GL_CW)、glFrontFace(GL_CCW)来设置每个面的正面;使用glColor3ub来设置立方体每六个顶点的颜色。单击鼠标右键可以在弹出的菜单里面选择是否显示坐标轴以及是正视图还是透视视图。按键盘的UP、DOWN、LEFT、RIGHT按键可以从不同的角度查看该颜色立方体。源原创 2013-07-01 23:14:34 · 4670 阅读 · 0 评论 -
VS2012下基于Glut glRotatef glTranslatef示例程序:
Demo使用glRotatef ,glTranslatef来实现一个太阳、地球、月亮运动的3D图形。1.glTranslatef() ——模型变换函数 移动void glTranslatef(GLfloat x, GLfloat y, GLfloat z);这个函数表示模型是怎样移动的。举个例子:glTranslatef(-1.0,0.0,-2原创 2013-06-28 22:12:29 · 3499 阅读 · 0 评论 -
VS2012下基于Glut 矩阵变换示例程序:
也可以使用我们自己的矩阵运算来实现OpenGL下的glTranslatef相应的旋转变换。需要注意的是OpenGL下的矩阵是列优先存储的。示例通过矩阵运算使得圆柱或者甜圈自动绕Y轴旋转,可以单击鼠标右键来弹出菜单选择是否显示坐标轴、正视图或者是透视图、是否打印变换矩阵、显示圆柱还是甜圈。程序用到math3d中的矩阵相关函数。由于绘制的坐标轴并未参加矩阵变换,在运行过程中会发现坐标轴并不原创 2013-07-01 22:00:34 · 3997 阅读 · 1 评论 -
VS2012下基于Glut OpenGL绘制点(添加设置点大小)示例程序:
在VS2012下使用glut绘制一些列点(点大小顺序变大)的示例程序,绘制的是四个螺纹,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看螺纹:未进行平滑处理的效果:进行了平滑处理的效果:源代码如下所示:// GlutPointszDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"原创 2013-06-06 21:59:05 · 7096 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_POLYGON_STIPPLE示例程序:
直线可以被画成虚线,而多边形则可以进行镂空。首先,使用glEnable(GL_POLYGON_STIPPLE);来启动镂空模式(使用glDisable(GL_POLYGON_STIPPLE)可以关闭之)。然后,使用glPolygonStipple来设置镂空的样式。void glPolygonStipple(const GLubyte *mask);其中的参数mask原创 2013-06-16 14:33:24 · 4117 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_POLYGON示例程序:
很多书介绍 GL_POLYGON连续点生成多边形时这下点必须是凸多边形的,规则如下图所示。写个Demo验证了下似乎不是凸多边形的也可以。Demo的正面与背面显示效果:源代码如下所示:// GlutPolygonDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //圆周率宏原创 2013-06-14 07:37:18 · 4598 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_CULL_FACE示例程序:
在VS2012下基于Glut OpenGL连续点围成曲面正面与背面示例程序:一节中介绍了连续点围成曲面的正面方向符合右手规则,这一节我们通过这一节使用glEnable(GL_CULL_FACE)来打开在曲面是背面不显示功能,glDisable(GL_CULL_FACE)来关闭在曲面是背面不显示功能来进一步验证这一点。Demo在没有打开在曲面是背面不显示功能显示效果如下:通过单击鼠标原创 2013-06-13 21:31:38 · 3154 阅读 · 0 评论 -
VS2012下基于Glut OpenGL绘制椎体示例程序:
这一节在OpneGL绘制椎体,并在单击鼠标右键弹出的菜单里面可以选择打开或关闭:GL_DEPTH_TEST(深度测试);GL_CULL_FACE(曲面是背面时是否显示)功能;曲面是背面时是采用单色填充还是描边。显示效果如下所示:单击鼠标右键弹出菜单效果如下所示:源代码:// GlutConeDemo.cpp : 定义控制台应用程序的入口点。//#include原创 2013-06-13 21:51:07 · 2121 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_QUAD_STRIP示例程序:
OpenGL连续点通过GL_QUAD_STRIP生成四边形规则如下图所示:演示程序效果如下图所示:源代码如下所示:// GlutQuadStripDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //圆周率宏#define GL_PI 3.1415f//获取屏幕的宽度GLint原创 2013-06-13 23:41:38 · 3815 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_LINE_STRIP示例程序:
在VS2012下使用glut绘制一系点连接起来的直线的示例程序,绘制的是四个螺纹,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形。 GL_LINE_STRIP连续点生成直线的规则如下:// GlutLineStripDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include原创 2013-06-08 20:50:56 · 3707 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_TRIANGLES示例程序:
在VS2012下使用glut GL_TRIANGLES绘制三角形示例程序,绘制的是两个三角形,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形。GL_TRIANGLES连续点生成三角形的规则如下图所示:源代码如下:// GlutTriangleDemo.cpp : 定义控制台应用程序的入口点。//#include "std原创 2013-06-08 22:15:28 · 3801 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_QUADS示例程序:
OpenGL 使用GL_QUADS绘制四边形示例程序,显示效果如下所示。 GL_QUADS连续点生成四边形的规则如下图所示:源代码如下:// GlutQuadsDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //圆周率宏#define GL_PI 3.1415f//获取屏幕的原创 2013-06-13 22:04:13 · 9008 阅读 · 0 评论 -
VS2012下基于Glut OpenGL绘制点示例程序:
在VS2012下使用glut绘制一些列点的示例程序,绘制的是四个螺纹,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看螺纹。绘制点的规则如下图所示:源代码如下所示:#include "stdafx.h"#include #include //圆周率宏#define GL_PI 3.1415f//获取屏幕的宽度GLint S原创 2013-06-05 22:02:40 · 3090 阅读 · 0 评论 -
VS2012下基于Glut OpenGL绘制直线示例程序:
在VS2012下使用glut绘制一系列直线的示例程序,绘制的是圆周上的二十条直径,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形。连续点绘制直线的规则如下图所示:源代码:// GlutLinesDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include原创 2013-06-08 07:03:29 · 2266 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_TRIANGLE_FAN示例程序:
在VS2012下使用glut GL_TRIANGLE_FAN绘制三角形示例程序,绘制的是多个三角形,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形:GL_TRIANGLE_FAN对序列点生成三角形的处理方式参考下图与http://blog.csdn.net/yearafteryear/article/details/9059795就可以看得很清楚:原创 2013-06-08 22:31:35 · 3862 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_LINE_LOOP示例程序:
在VS2012下使用glut绘制一系点连接起来的封闭曲线的示例程序,绘制的是个扇形,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形。GL_LINE_LOOP连续点生成封闭曲线的规则如下图所示:// GlutLineLoopDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#incl原创 2013-06-08 20:56:55 · 6774 阅读 · 0 评论 -
VS2012下基于Glut OpenGL GL_TRIANGLE_STRIP示例程序:
在VS2012下使用glut GL_TRIANGLE_STRIP绘制三角形示例程序,绘制的是多个三角形,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形。 GL_TRIANGLE_STRIP连续点生成三角形的规则如下图所示:源代码如下所示:// GlutTriangleStripDemo.cpp : 定义控制台应用程序的入口点。原创 2013-06-08 22:22:34 · 3932 阅读 · 0 评论 -
VS2012下基于Glut OpenGL绘制直线(添加设置直线宽度)示例程序:
在VS2012下使用glut绘制一系列直线的示例程序,绘制的是平行的几条直线,每条直线的宽度都不一样,效果如下图所示,按PC的UP,DOWN,LEFT,RIGHT按键可以从不同的角度查看该图形:// GlutLineswDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //圆周率宏#d原创 2013-06-08 07:11:30 · 4694 阅读 · 1 评论 -
VS2012下基于Glut 矩阵变换示例程序2:
在VS2012下基于Glut 矩阵变换示例程序:中我们在绘制甜圈或者圆柱时使用矩阵对相应的坐标进行变换后自己绘制甜圈或者圆柱。我们也可以使用glLoadMatrixf、glLoadMatrixd载入变换矩阵后直接使用Glut提供的函数绘制甜圈。这里我在载入变换矩阵后再去绘制坐标轴,所以在程序运行时坐标轴会随着定时器绕Y轴旋转。点击鼠标右键在弹出的菜单里面可以选择是否显示坐标轴、正视图还是透视视图、原创 2013-07-01 22:55:01 · 2197 阅读 · 0 评论