随笔分类 -  图形学

摘要:在视图模型变换中,顶点v的变换是按照相反的顺序发生的,而不是按照它的代码中先后顺序出现的。下面举例说明。考虑下面的代码:glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMultMatrixf(N); glMultMatrixf(M); glMultMatrixf(L); glBegin(GL_POINTS); glVertex3dv(v); glEnd(); 在这段代码中,模型视图矩阵按顺序分别包含I、N、NM,最后是NML,其中I表示单位矩阵。经过变化的顶点是NMLv。因此顶点变换就是N(M(Lv))。下面看绘制机器人手臂的dis... 阅读全文

posted @ 2011-12-03 11:10 江南烟雨hust 阅读(472) 评论(0) 推荐(0)

摘要:Bresenham是由Bresenham提出的一种精确而有效地光栅线生成算法,该算法仅使用增量整数计算。另外,它还可以用于显示其它曲线。我们以斜率大于0小于1的线段来进行考虑。以单位x间隔进行取样。每次绘制了当前像素点(xk,yk)之后,需要确定下一个要绘制的点是(xk+1,yk)还是(xk+1,yk+1),需要判断哪一个点像素点更接近线路径。在取样位置,我们使用d1和d2来表示两个像素和线路径的偏移。在像素列位置xk+1处的直线上的y坐标可计算为:y=m(xk+1)+b那么:d1=y-yk=m(xk+1)+b-ykd2=(yk+1)-y=yk+1-m(xk+1)-b要确定那个像素点更接近于线 阅读全文

posted @ 2011-11-28 10:59 江南烟雨hust 阅读(1134) 评论(0) 推荐(0)

摘要:今天编译一个OpenGL程序时遇到了一个很奇怪的问题。一个简短的代码,实现画一个三角形。这个工程文件就包含一个cpp文件。工程以前运行时正确的,现在打开运行也正确。我的OpenGL是按照这篇文章进行配置的:点击打开链接。应该没有什么问题。但是当我新建一个工程并把原来的代码拷贝过来,运行便出错。而且我记得以前建立那个工程的时候并没有配置什么东西。为什么两个工程代码一模一样但是运行结果不一样呢?甚是郁闷啊!下面贴代码:#include <GL/glut.h> void init() { glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_SMO 阅读全文

posted @ 2011-11-14 19:57 江南烟雨hust 阅读(767) 评论(0) 推荐(0)

摘要:我在运行《OpenGL编程指南(第六版)》中文版第142页的程序blendeqn.c时,遇到错误:1>------ 已启动生成: 项目: blendeqn, 配置: Debug Win32 ------1>正在编译...1>blendeqn.cpp1>e:\学习\程序练习\opengl\blendeqn\blendeqn\blendeqn.cpp(23) : error C2065:“GL_FUNC_ADD”: 未声明的标识符1>e:\学习\程序练习\opengl\blendeqn\blendeqn\blendeqn.cpp(23) : error C3861:“ 阅读全文

posted @ 2011-11-05 16:36 江南烟雨hust 阅读(2087) 评论(0) 推荐(0)

摘要:Cg(C for Graphcis)语言,是NVIDIA 与Microsoft 合作研发,旨在为开发人员提供一套方便、跨平台(良好的兼容性),控制可编程图形硬件的高级语言。Cg 语言的语法结构与C 语言非常类似,使用Cg 编写的着色程序默认的文件后缀是*. Cg。首先从NVIDIA官方网站上下载Cg编译器:http://developer.nvidia.com/cg-toolkit。下载后直接安装即可。安装成功后在下列目录里会出现cgc.exe文件:C:\Program Files\NVIDIA Corporation\Cg\bin(可能会随着安装目录的不同而有所不同)。Cg 语言规范是公开和 阅读全文

posted @ 2011-11-04 21:57 江南烟雨hust 阅读(3329) 评论(0) 推荐(0)

摘要:包括太阳、一颗行星和一颗卫星。d按键控制行星自转,y按键控制行星绕太阳公转,p控制卫星的公转。代码:#include <GL/glut.h> static int year = 0,day = 0,d = 0; void init() { glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FLAT);//着色模型 } void reshape(int w,int h) { glViewport(0,0,(GLsizei)w,(GLsizei)h);//在窗口中定义一个像素矩形,最终的图像将映射到这个矩形中 glMatrixMode(GL. 阅读全文

posted @ 2011-10-28 15:38 江南烟雨hust 阅读(1702) 评论(0) 推荐(0)

摘要:环境:VS2008首先创建一个二十面体:代码:#include <GL/glut.h> #define X .525731112119133606 #define Z .850650808352039932 static GLfloat vdata[12][3] = {//各顶点坐标 {-X,0.0,Z},{X,0.0,Z},{-X,0.0,-Z},{X,0.0,-Z}, {0.0,Z,X},{0.0,Z,-X},{0.0,-Z,X},{0.0,-Z,-X}, {Z,X,0.0},{-Z,X,0.0},{Z,-X,0.0},{-Z,-X,0.0}, }; static GLuint 阅读全文

posted @ 2011-10-21 20:24 江南烟雨hust 阅读(328) 评论(0) 推荐(0)

摘要:OpenGL是Windows自带的。如何查看自己电脑上的OpenGL版本呢?新建win32空项目,添加cpp文件,写入下列代码:#include<Windows.h> #include <stdio.h> #include <GL/glut.h> int main(int argc, char** argv) { glutInit(&argc,argv); //显示模式初始化 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH); //定义窗口大小 glutInitWindowSize(3... 阅读全文

posted @ 2011-10-13 10:34 江南烟雨hust 阅读(497) 评论(0) 推荐(0)

导航