openGL绘制点,线


#include "stdafx.h"
#include
#include"gl.h"

#include"glut.h"

//渲染场景

void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);//用当前颜色填充窗口
glColor3f(1.0f, 0.0f, 0.0f);//设置当前的绘图RGB颜色值

GLfloat sizes[2];//保存绘制点的尺寸范围
GLfloat step;//保存绘制点的步长
GLfloat curSize;//当前绘制点的大小

glGetFloatv(GL_POINT_SIZE_RANGE, sizes); //获得点的尺寸范围
glGetFloatv(GL_POINT_SIZE_GRANULARITY, &step);//获得点尺寸的步长


curSize = sizes[0];
for (int i = 0; i < 26; i++)
{
glPointSize(curSize);//设置点的大小
glBegin(GL_POINTS);
glVertex3f(25.0+i*8,200.0f, 0.0f);
glEnd();
curSize += step * 2;
}
//绘制直线
glLineWidth(5);//线宽
glBegin(GL_LINES);
glVertex3f(25.0f, 100.0f, 0.0f);//起点坐标
glVertex3f(226.0f, 100.0f, 0.0f);//终点坐标
glEnd();
//绘制虚线


glEnable(GL_LINE_STIPPLE);
glLineStipple(1, 0x00FF);//设置点划线模式
glBegin(GL_LINES);
glVertex3f(25.0f, 80.0f, 0.0f);//起点坐标
glVertex3f(226.0f, 80.0f, 0.0f);//终点坐标
glEnd();
glDisable(GL_LINE_STIPPLE);


//刷新OpenGL命令队列
glFlush();



}
//改变大小
void ChangeSize(GLsizei w, GLsizei h)
{
if (0 == h)
h = 1;
glViewport(0, 0, w, h);//设置社区尺寸 左边 上边距离
//重置坐标系统
glMatrixMode(GL_PROJECTION);//投影
glLoadIdentity();
//建立修建空间的范围
if (w <= h)
glOrtho(0.0f, 250.0f, 0.0f, 250.0f*h / w, 1.0f, -1.0f);//左 右 下 上 近 远
else
glOrtho(0.0f, 250.0f, 250.0f*w / h, 0.0f, 1.0f, -1.0f);
glMatrixMode(GL_MODELVIEW);//模型视景
glLoadIdentity();//重置当前指定的矩阵为单位矩阵




}
//渲染状态
void SetupRC()
{
glClearColor(0.0f, 1.0f, 1.0f, 1.0f);//设置窗口背景色(afa值)


}
int _tmain(int argc, _TCHAR* argv[])
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("绘制点线");
glutDisplayFunc(RenderScene);//设置当前窗口的显示回调函数
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
}


你可能感兴趣的:(openGL绘制点,线)