计算机图形学之画基本图形(1)

原创 2015年09月26日 15:10:33

第一次实验:理解语句

#include<GL/glut.h>
#include<math.h>
int i;
const int n=1000;
const GLfloat R=0.5f;
const GLfloat Pi=3.1415926536f;
void myDisplay(void)
{
	glClearColor(0.0,0.0,0.0,0.0);
	glClear(GL_COLOR_BUFFER_BIT);
        //画正方形
	glColor3f(1.0f,1.0f,1.0f);
	glRectf(-0.5f,-0.5f,0.5f,0.5f);

        // 画三角形
	glBegin(GL_TRIANGLES);//glBegin()和glEnd()函数之间调用函数完成点、线、和多边形的绘制。</span>
	glColor3f(1.0f,0.0f,0.0f);glVertex2f(0.0f,1.0f);
	glColor3f(0.0f,1.0f,0.0f);glVertex2f(0.8f,-0.5f);
	glColor3f(0.0f,0.0f,1.0f);glVertex2f(-0.8f,-0.5f);
	glEnd();
       //圆
   glColor3f(1.0f, 0.0f, 1.0f);
   glBegin(GL_POLYGON);
   for(i=0; i<n; ++i)
        glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
    glEnd();

    //五角星
   glColor3f (0.0f, 0.0f, 1.0f);
   GLfloat a = 1 / (2-2*cos(72*Pi/180));
   GLfloat bx = a * cos(18 * Pi/180);
   GLfloat by = a * sin(18 * Pi/180);
   GLfloat cy = -a * cos(18 * Pi/180);
   GLfloat
        PointA[2] = { 0, a },      PointB[2] = { bx, by },
        PointC[2] = { 0.5, cy },   PointD[2] = { -0.5, cy },
        PointE[2] = { -bx, by };  
    glBegin(GL_LINE_LOOP);
    glVertex2fv(PointA);    glVertex2fv(PointC);
    glVertex2fv(PointE);    glVertex2fv(PointB);
    glVertex2fv(PointD);
    glEnd();

    //点
	glPointSize(3);
	glBegin(GL_POINTS);
	glColor3f(1.0f,0.0f,0.0f);glVertex2f(-0.6f,0.6f);
	glColor3f(0.0f,1.0f,0.0f);glVertex2f(0.6f,-0.0f);
	glColor3f(0.0f,0.0f,1.0f);glVertex2f(-0.6f,-0.6f);
	glEnd();

	glFlush();//函数启动OpenGL绘图命令的执行,并将图形光栅化后输出在设备上。</span>
}

int main(int argc,char *argv[])//注意
{
    glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
	glutInitWindowPosition(100,100);
	glutInitWindowSize(400,400);
	glutCreateWindow("Hello world!");
	glutDisplayFunc(&myDisplay);
	glutMainLoop();
	return 0;
}

运行结果:


注意main函数中的各语句,除了最后的return之外,其余全部以glut开头。这种以glut开头的函数都是GLUT工具包所提供的函数,下面对用到的几个函数进行介绍。
1
glutInit,对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。其格式比较死板,一般照抄这句glutInit(&argc, argv)就可以了。
2
glutInitDisplayMode,设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。更多信息,请自己Google。当然以后的教程也会有一些讲解。
3
glutInitWindowPosition,这个简单,设置窗口在屏幕中的位置。
4
glutInitWindowSize,这个也简单,设置窗口的大小。
5
glutCreateWindow,根据前面设置的信息创建窗口。参数将被作为窗口的标题。注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop才能看到窗口。
6
glutDisplayFunc,设置一个函数,当需要进行画图时,这个函数就会被调用。(这个说法不够准确,但准确的说法可能初学者不太好理解,暂时这样说吧)。
7
glutMainLoop,进行一个消息循环。(这个可能初学者也不太明白,现在只需要知道这个函数可以显示窗口,并且等待窗口关闭后才会返回,这就足够了。)

glutDisplayFunc函数中,我们设置了当需要画图时,请调用myDisplay函数。于是myDisplay函数就用来画图。观察myDisplay中的三个函数调用,发现它们都以gl开头。这种以gl开头的函数都是OpenGL的标准函数,下面对用到的函数进行介绍。
1
glClear,清除。GL_COLOR_BUFFER_BIT表示清除颜色,glClear函数还可以清除其它的东西,但这里不作介绍。
2
glRectf,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。
3
glFlush,保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。其作用跟fflush(stdout)类似。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

解决安装OpenGL时程序运行提示glut32.dll丢失的问题

很多同学都出现了一个问题,在按照教程配置好OpenGL后运行测试程序,编译通过,但运行时出现”计算机丢失glut32.dll文件“,可C:\WINDOWS\system 32中有这个文件。...

【计算机图形学】基本图形元素:圆的生成算法

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de...

计算机图形学(四)_几何变换_1_基本的二维几何变换(三)_缩放

改变一个对象的大小,可使用缩放(scaling)变换。一个简单的二维缩放操作可通过将缩放系数(scaling factor)Sx 和 Sy与对象坐标位置(x, y)相乘而得: 在缩放公式中...

计算机图形学(四)_几何变换_1_基本的二维几何变换(二)_旋转

类似于平移,旋转是一种不变形地移动对象的刚体变换,对象上的所有点旋转相同的角度。线段的旋转可以通过将旋转方程5用于每个线段端点,并重新绘制新端点间的线段而得到。多边形的旋转则是将每个顶点旋转指定的旋转...

计算机图形学(四)_几何变换_1_基本的二维几何变换(一)

几何变换有时也称为建模变换(modeling transformation ),但有些图形系统将两者区分开来。建模变换一般用于构造场景或给出由多个部分组合而成的复杂对象的层次式描述等。例如,一架飞机由...

计算机图形学-实验1-掌握开发环境配置方法和基本图元绘制函数

实验一:(2学时) 一、 实验目的: 掌握开发环境配置方法和基本图元绘制函数 二、 实验内容: 1、熟悉开发环境 2、掌握点、线等基本图元绘制函数 三、 开发工具简介、实现效果及步骤 1、...

【计算机图形学课程】一.MFC基本绘图函数使用方法

这是最近我《计算机图形学》课程实践编程课介绍的相关知识,主要是想通过MFC C++绘图,让学生体会下图形学相关的编程及简单的图形绘制,同时非常佩服学生的想象力,他们做得真的不错。希望这篇基础文章对你有...

用JavaScript玩转计算机图形学(二)基本光源

上一篇介绍了简单的光线追踪,凑合了临时用的光源去渲染效果。这次将讲解三种基本光源,及一些背景理论。过分简化的教材和现成API(OpenGL/Direct3D等)可能会做成一些错误理解。在此,希望文章能...

计算机图形学中的基本概念总结

Chapter 01 001、Image Processing:图像处理,照片和电视扫描片等现有图片的修改或者解释称为图像处理; 002、计算机图形学中,计算机用来生成图形,而图像处理技术用来改善...

计算机图形学——OpenGL基本使用

一、项目要求     利用OpenGL绘制一个基本场景,加入灯光,实现交互操作。        二、开发环境     采用Microsoft Visual C 2012集成环境并用C++编写程序 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机图形学之画基本图形(1)
举报原因:
原因补充:

(最多只允许输入30个字)