文章分类 - OpenGL!
摘要:#include #include #ifdef __cplusplusextern "C"#endifFILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};GLfloat x = 0.0f;GLfloat y = 0.0f;GLfloat rsize = 25.0f;GLfloat xstep = 1.0f;GLfloat ystep = 1.0f;GLfloat fWinHorRadius = 100.0f;//actual window size or size in the clip v
阅读全文
摘要:一般来说,"将就小的"原则,即挡板效应举例来说:OrigWidth OrigHeight 二者最初具有一定的比例关系 OrigRatio = OrigWidth*1.0/OrigHeight;窗口大小改变后:AftWidth AftHeight AftRatio = AftWidth*1.0/AftHeight;应当这样裁剪:if(AftRatio < OrigRatio) //width decreases or height increasesthen ClipWidth = AfterWidth; ClipHeight = AftWidth*1.0/OrigRa
阅读全文
摘要:工程配置:1.工程属性-->C/C++-->附加包含目录 添加src\shared目录2.工程属性-->链接器-->附加依赖库: 添加freeglut_static.lib(可能需要制定相对路径或绝对路径)3.工程属性-->链接器-->忽略特定库: LIBC.lib编译时ERROR: LNK2001: 无法解析的外部符号 __iob解决方法:在.cpp文件的开始部分添加代码:#ifdef __cplusplusextern "C"#endifFILE _iob[3] = {__iob_func()[0], __iob_func()[1],
阅读全文
摘要:现在时间是2013年12月3号,其实接触OpenGL是很早之前的事儿了,而且断断续续的学习了OpenGL 4th和5th两个版本,后来因为工作原因,中断了学习。但心里始终放不下,决定抽时间也要好好研究下OpenGL,不深入研究下怎么知道它到底值不值, 好不好?OpenGL Super Bible(5th)觉得有些封装的太高级了,反而不如第四版容易理解。因此决定从第四版入手。这里,把所有(I mean it)需要+配置的东西罗列下。1.Book: (涉及侵权问题,审核不通过,不过网上其他地方也能找到) pan.baidu.com#Honkhat202.Src Code: http://pan.b
阅读全文
摘要:一、基本原理 骨骼动画的基本原理就是首先控制各个骨骼和关节,再使附在上面的蒙皮(Mesh)与其相匹配。 一个角色由作为皮肤的单一网格模型和按照一定层次组织起来的骨骼组成。 骨骼层次描述了角色的结构:相邻的骨骼通过关节连接,并且可以做出相对的运动。这里要注意的是,骨骼间是具有“父子”关系的,比如,右前臂是右上臂的子节点,同时又是右手的父节点。通过改变相邻骨骼间的位移、夹角,就可以做出不同的动作,实现不同的动画效果。 皮肤作为一个网格蒙在骨骼之上,规定角色的外观。这里的皮肤不死固定不变的刚性mesh,而是可以在骨骼影响下变化的一个可变性mesh。组成皮肤的每一个顶点都会受到一个或多个骨...
阅读全文
摘要:这里从OpenGL的角度来谈绘制花托的方法。--写在前面的话首先看一组花托的实例:图1 花托的一个实例正面图图2 花托的一个实例侧面图 既然选择手工绘制,必须进行数学分析了。首先要确定总体的设计算法:按照微积分的数学思想,我们可以选择一个“通用”的截面进行分析,这里很明显就是下图标记为红色的圆,然后让它绕原点旋转360°,就形成了花托(这是老外的说法,说成轮胎也无妨)。 为了方便描述,我们做些规定(可能与之前的“内圆”“外圆”的说法不同,但后面具体实现绘制花托时,就会看到它的方便了): 圆心O1和O2的距离,我们称之为大半径,用R表示,对应的圆称之为“大圆”; 以O2为圆心的圆的半径
阅读全文
摘要:正在做3D方面的毕设,免不了用到OGL,目前的最新版本:SuperBible5th,OGL 3.3。因为要参考很多前人的资料--那时候没有现在GLTools里新添加的各种封装的类,如GLBatch、TransformationMatrix等,底层的我更喜欢,总之,准备从4th开始学起。 从sina.iask上下了一个“OGL4th及源码”--这个名字各种语法错误不说,后面发生的事情更让人DT了。。。 解压后,是一个project文件夹,里面每章各分配一个文件夹,各章文件夹下又按照各个实例分配新的文件夹。但是,问题马上就来了:每个实例中只有3个文件:一个exe可执行文件(可以运行)、一个...
阅读全文
摘要:从书上和别人的言论里,听到很多说法:“先平移后旋转,先旋转后平移是不一样的” “平移和旋转的操作对象是物体,还是坐标系?” “旋转的第一个角度参数是为逆时针指定的” “程序指定顺序和机器执行顺序是相反的”..所谓“眼见为实”,亲自试验,才可信:先上图: 平移操作:glTranslatef(180.0f,0.0f,0.0f);旋转操作:glRotatef(105.0f,0.0f,0.0f,1.0f);(开始采用的是球体,但不如有棱角的立方体更能说明问题)第一个图是先旋转,后平移的效果。它能说明:1.glTranslatef glRotatef的对象都是坐标系,否则蓝色的立方体不会出现在左上方(可
阅读全文
摘要:三角锥的建立:选取顶点(0.0f, 0.0f, 75.0f),其他顶点按照角度不断旋转生成即可。为了效果更明显,每绘制一个三角形改变一下颜色,并且着色模式选择GL_FLAT(默认为GL_SMOOTH).三角锥底部的“封口”:以原点(0.0f,0.0f,0.0f)为中心,旋转角度建立一个三角扇即可。为了突出效果,同样每绘制一个三角形改变一下color。三角锥正反面的区分(褐色背景是错误解析):三角扇以CCW为正,角度也是按照CCW增加的,设想一下:站在顶点(0.0f,0.0f,75.0f),开始绘制三角扇了。先连一个angle为0的点,再连到一个angle为2的点(逆时针哦),那么现在如果我们“
阅读全文
摘要://测试角度是否以逆时针为正#define FREEGLUT_STATIC#include <GL/glut.h>#include <math.h>GLfloat x=0.0f;GLfloat y=0.0f;GLfloat fRange=15.0f;void SetupRC(){ glClearColor(0.0f,0.0f,0.0f,1.0f);}void RenderScene(){ glClear(GL_COLOR_BUFFER_BIT); glPolygonMode(GL_FRONT,GL_LINE); glBegin(GL_TRIANGLE_FAN); glC
阅读全文
摘要:#define FREEGLUT_STATIC#include <GL/glut.h>GLfloat nRange=10.0f;GLfloat xRot=0.0f;GLfloat yRot=0.0f;void SetupRC(){ glClearColor(0.0f,0.0f,0.0f,1.0f); glColor3f(1.0f,0.0f,0.0f);}void RenderScene(){ glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(xRot,1.0f,0.0f,0.0f); glRotatef(yRot,0.0
阅读全文
摘要:// Lstipple.c// OpenGL SuperBible, Chapter 4// Demonstrates line stippling// Program by Richard S. Wright Jr.#define FREEGLUT_STATIC#include <GL/glut.h>// Define a constant for the value of PI#define GL_PI 3.1415f// Rotation amountsstatic GLfloat xRot = 0.0f;static GLfloat yRot = 0.0f;// Calle
阅读全文
摘要:#define FREEGLUT_STATIC#include <GL/glut.h>GLfloat nRange=100.0f;//视景体的边界值GLfloat xRot=0.0f,yRot=0.0f;GLfloat PI=3.1416f;GLfloat y=0.0f;//各条直线对应的y坐标值GLfloat fCurrSize=0.0f;//当前的直线宽度GLfloat fSizes[2]={0.0f};//直线宽度的极限值void SetupRC(){ //background color glClearColor(0.0f,0.0f,0.0f,1.0f); //dra...
阅读全文
摘要://功能:显示一个星形,同时练习glEdgeFlag的使用//Star.c//Testing glEdgeFlag//Program by Richard S. Wright Jr.#define FREEGLUT_STATIC#include <GL/glut.h>//rotation anglesstatic GLfloat xRot=0.0f;static GLfloat yRot=0.0f;//clip volumeGLfloat nRange=100.0f;//flags for effects#define MODE_SOLID 0#define MODE_LINE 1
阅读全文
摘要:1.工程-->属性-->VC++ Directories-->包含目录-->(freeglut的include文件夹的位置)指定glut.h所在的位置 (如果用到GLTools也把其对应的include目录添加进来,我暂不用)2.工程-->属性-->VC++ Directories-->库目录-->(freeglut.lib所在的位置) (如果用到GLTools也把其相应的lib目录添加进来)3.工程右键-->添加-->现有项-->选择目录,找到“freeglut.lib”,确定 (或者在“链接器”——->附加依赖库中添加
阅读全文
摘要:今天真是活见鬼了。是这样的,按照网上的做法:1.glut.h放进C:\Program Files(x86)\Microsoft SDKs\Windows\v7.1\Include\gl下(里面已经有GL.h GLU.h);2.glut.lib glut32.lib放进目录C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;3.glut.dll 放进C:\Windows\System32;4.glut32.dll 放进C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bi
阅读全文
摘要:OpenGL官方网站(英文)http://www.opengl.org下面我将对Windows下的OpenGL编程进行简单介绍。 第一步:选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。但这里我们选择VC++ 6.0作为学习OpenGL的环境。 第二步:安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources
阅读全文

浙公网安备 33010602011771号