#define GLUT_DISABLE_ATEXIT_HACK
#include "GLUT.H"
#include<math.h>
#define ZVALUE 20.0f
int w_width = 600;
int w_height = 600;
//DDA绘制直线
void DDA(int x0, int y0, int x1, int y1)
{
float dx = x1 - x0;
float dy = y1 - y0;
float k = dy / dx;
float x = x0;
float y = y0;
while (x <= x1)
{
glVertex2d(x, y);
x++;
y = floor(y + k + 0.5);
}
}
//绘制内容
void display(void)
{
glClearColor(1.f, 1.f, 1.f, 0.f);
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3b(0, 0, 1);
glBegin(GL_POINTS); //GL_POINTS
DDA(-200, -200, +200, +200);
glEnd();
glPopMatrix();
glFlush();
}
//投影方式、modelview方式等设置
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w_width, (GLsizei)w_height);//视口大小
glMatrixMode(GL_PROJECTION);//设置投影模式以及视景体大小
glLoadIdentity();
if (w <= h)
glOrtho(-0.5 * w_width, 0.5 * w_width, -0.5 * w_height * (GLfloat)w_height / (GLfloat)w_width, 0.5 * w_height * (GLfloat)w_height / (GLfloat)w_width,
-ZVALUE, ZVALUE);
else
glOrtho(-0.5 * w_width, 0.5 * w_width, -0.5 * w_height * (GLfloat)w_width / (GLfloat)w_height, 0.5 * w_height * (GLfloat)w_width / (GLfloat)w_height,
-ZVALUE, ZVALUE);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
//主调函数
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(w_width, w_height);
glutInitWindowPosition(50, 50);
glutCreateWindow("1");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
原理就不赘述了
调用方法:把要画的东西放在display()调用函数的 glBegin()和glEnds()里面,
glBegin(GL_POINTS)参数写成(GL_POINTS);