opengl点的绘制

来源:互联网 发布:sipits网络怎么连 编辑:程序博客网 时间:2024/04/28 21:57
#include "stdafx.h"
#include<GL\glut.h>


void RenderScene()

//清除颜色缓冲区,填充的颜色由glClearColor(0,0,0,1);指定为黑色
    glClear(GL_COLOR_BUFFER_BIT);
glPointSize(9);//指定点的大小,9个像素单位
glColor3f(1.0f,0.0f,0.0f);//指定点的颜色值,此点的颜色为红色
glBegin(GL_POINTS);//开始画点
 glVertex3f(0.0f,0.0f,0.0f);//在坐标为(0,0,0)的地方绘制了一个点
    glEnd();//画点结束
glutSwapBuffers();//交换缓冲区
}


void SetupRC()
{
glClearColor(0.0f,0.0f,0.0f,1);//以RGB(0,0,0)即黑色来清空颜色缓冲区
glColor3f(1.0f,0.0f,0.0f);//以RGB(1,0,0)即红色来绘制图形
}


//当窗口大小改变时接受新的宽度和高度
void ChangeSize(GLsizei w,GLsizei h)
{
GLfloat nRange=200.0f;
//防止h被除时为0
if(h==0)
h=1;
    //设立视口到窗口之间的范围
glViewport(0,0,w,h);
    //重设投影矩阵
    glMatrixMode(GL_PROJECTION);//声明对投影矩阵进行操作
    glLoadIdentity();//把对栈顶的那个矩阵设置为单位矩阵,让之前的任何变换都不影响后面的变化
    //正交投影变换
if(w<=h)
glOrtho(-nRange,nRange,-nRange*h/w,nRange*h/w,-nRange,nRange);
else
glOrtho(-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);


glMatrixMode(GL_PROJECTION);//声明对模型视景矩阵进行操作
glLoadIdentity();


}


int main(int argc,char* argv[])
{
glutInit(&argc,argv);//初始化glut库
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);//设置图形显示模式
//GLUT_DOUBLE:使用双缓存。以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。 
//GLUT_RGB:建立RGB模式的窗口
//GLUT_DEPTH:使用深度缓存
glutInitWindowSize(200,200);//设置图形窗口大小
glutCreateWindow("point example");//设置窗口名
glutDisplayFunc(RenderScene);//注册一个绘图函数
glutReshapeFunc(ChangeSize);//负责窗口尺寸
        SetupRC();//设置渲染
        glutMainLoop();//让整个绘图循环进行,相当于死循环
return 0;

}

结果图: