/*my first program.cpp*/
#include "stdafx.h"
#include <glut.h>
float xa=100,ya=100,xb=200,yb=200,xc=60,xd=240,xe=150,yc=230;
void display(void);
void myreshape(GLsizei w, GLsizei h);
void mykeyboard(unsigned char key, int x, int y);
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
char *argv[] = {"hello ", " "};
int argc = 2; // must/should match the number of strings in argv
glutInit(&argc, argv); //初始化GLUT库;
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式;(缓冲,颜色类型)
glutInitWindowSize(500, 500);
glutInitWindowPosition(1024 / 2 - 250, 768 / 2 - 250);
glutCreateWindow("Hello"); //创建窗口,标题为“hello”;
glutDisplayFunc(display); //用于绘制当前窗口;
glutKeyboardFunc(mykeyboard);
glutReshapeFunc(myreshape);
glutMainLoop(); //表示开始运行程序,用于程序的结尾;
return 0;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区
glColor3f(0.1,0.9,0.8);
glBegin(GL_TRIANGLES);
glVertex2f(xc,yb);
glVertex2f(xd,yb);
glVertex2f(xe,yc);
glEnd();
glColor3f(0.7,0.9,0.2);
glRectf(xa,ya,xb,yb);
glColor3f(0.4,0.2,0.8);
glRasterPos2i((xa+xb)/2,(ya+yb)/2); //定位当前光标
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'K');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'r');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'i');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'s');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'t');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'e');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'n');
glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;
}
void mykeyboard(unsigned char key, int x, int y)
{
switch(key)
{
case 'W':
case 'w':// 矩形对角坐标变量修改使得矩形上移
ya+=20; yb+=20;yc+=20;
break;
case 'S':
case 's'://矩形对角坐标变量修改使得矩形下移
ya-=20;yb-=20;yc+=20;
break;
case 'A':
case 'a'://矩形对角坐标变量修改使得矩形左移
xa-=20; xb-=20;xc-=20;xd-=20;xe-=20;
break;
case 'D':
case 'd'://矩形对角坐标变量修改使得矩形右移
xa+=20; xb+=20;xc+=20;xd+=20;xe+=20;
break;
}
//参数修改后调用重画函数,屏幕图形将发生改变
glutPostRedisplay();
}
void myreshape(GLsizei w, GLsizei h)
{
glViewport(0,0,w,h); //设置视区位置
glMatrixMode(GL_PROJECTION);//设置投影变换模式
glLoadIdentity(); //调单位矩阵,清空当前矩阵堆栈
gluOrtho2D(0,300,0,300);
}
#include "stdafx.h"
#include <glut.h>
float xa=100,ya=100,xb=200,yb=200,xc=60,xd=240,xe=150,yc=230;
void display(void);
void myreshape(GLsizei w, GLsizei h);
void mykeyboard(unsigned char key, int x, int y);
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
char *argv[] = {"hello ", " "};
int argc = 2; // must/should match the number of strings in argv
glutInit(&argc, argv); //初始化GLUT库;
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式;(缓冲,颜色类型)
glutInitWindowSize(500, 500);
glutInitWindowPosition(1024 / 2 - 250, 768 / 2 - 250);
glutCreateWindow("Hello"); //创建窗口,标题为“hello”;
glutDisplayFunc(display); //用于绘制当前窗口;
glutKeyboardFunc(mykeyboard);
glutReshapeFunc(myreshape);
glutMainLoop(); //表示开始运行程序,用于程序的结尾;
return 0;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区
glColor3f(0.1,0.9,0.8);
glBegin(GL_TRIANGLES);
glVertex2f(xc,yb);
glVertex2f(xd,yb);
glVertex2f(xe,yc);
glEnd();
glColor3f(0.7,0.9,0.2);
glRectf(xa,ya,xb,yb);
glColor3f(0.4,0.2,0.8);
glRasterPos2i((xa+xb)/2,(ya+yb)/2); //定位当前光标
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'K');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'r');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'i');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'s');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'t');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'e');
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'n');
glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;
}
void mykeyboard(unsigned char key, int x, int y)
{
switch(key)
{
case 'W':
case 'w':// 矩形对角坐标变量修改使得矩形上移
ya+=20; yb+=20;yc+=20;
break;
case 'S':
case 's'://矩形对角坐标变量修改使得矩形下移
ya-=20;yb-=20;yc+=20;
break;
case 'A':
case 'a'://矩形对角坐标变量修改使得矩形左移
xa-=20; xb-=20;xc-=20;xd-=20;xe-=20;
break;
case 'D':
case 'd'://矩形对角坐标变量修改使得矩形右移
xa+=20; xb+=20;xc+=20;xd+=20;xe+=20;
break;
}
//参数修改后调用重画函数,屏幕图形将发生改变
glutPostRedisplay();
}
void myreshape(GLsizei w, GLsizei h)
{
glViewport(0,0,w,h); //设置视区位置
glMatrixMode(GL_PROJECTION);//设置投影变换模式
glLoadIdentity(); //调单位矩阵,清空当前矩阵堆栈
gluOrtho2D(0,300,0,300);
}