//不支持缩放和平移
#include<windows.h>
#include <gl/glut.h>
struct GLintPoint{
GLint x , y;
};
const GLint screenWidth = 640;
const GLint screenHeight = 480;
void myDisplay(void);
void myInit(void);
void drawDiamond(GLintPoint centerPoint, GLint size);
int main(int argc, char ** argv){
glutInit(&argc,argv);
//GLUT_RGB 不是GLU_RGB
/************************************************************************/
/* GLUT: Fatal Error in ....Test001.c.exe: pixel format with necessary capabilities not found. */
/************************************************************************/
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(screenWidth,screenHeight);
glutInitWindowPosition(100,150);
//没有这一句会停止工作
glutCreateWindow("Diamond SnowFlake");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
return 0;
}
void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT);
GLintPoint pt[6] = {{350,400},{500,360},{100,250},{300,250},{280,150},{480,180}};
GLint d[6] = {50,100,80,10,50,150};
for (int i = 0 ; i< 9 ; ++i)
{
drawDiamond(pt[i],d[i]);
}
}
void myInit(void){
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(0.0f,0.0f,0.0f);
glPointSize(2.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)screenWidth,0.0,(GLdouble)screenHeight);
}
void drawDiamond(GLintPoint centerPoint, GLint size){
glBegin(GL_LINE_LOOP);
glVertex2d(centerPoint.x,centerPoint.y+size);
glVertex2d(centerPoint.x+size,centerPoint.y);
glVertex2d(centerPoint.x,centerPoint.y-size);
glVertex2d(centerPoint.x-size,centerPoint.y);
glEnd();
glFlush();
}
//菱形: 四条边相等;
//简单的菱形:应该就是一个正方形吧。看书上给出的图形,只有两个参数(center,d),看出来应该就是一个旋转π/4的一个方形。