|
|
源代码如下:
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>
void CALLBACK mydisplay(void);
void CALLBACK myReshape(GLsizei w,GLsizei h);
void main(void)
{
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,500,500);
auxInitWindow("my program");
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef (57.5, 35.0, 0.0);
auxReshapeFunc(myReshape);
auxMainLoop(mydisplay);
}
void CALLBACK mydisplay(void)
{
glColor3f(1.0,1.0,0.0);
//draw head
glBegin(GL_POLYGON);
glVertex2f(55.0,60.0);
glVertex2f(60.0,60.0);
glVertex2f(60.0,55.0);
glVertex2f(55.0,55.0);
glEnd();
//draw body
glBegin(GL_POLYGON);
glVertex2f(50.0,53.0);
glVertex2f(65.0,53.0);
glVertex2f(65.0,33.0);
glVertex2f(50.0,33.0);
glEnd();
//draw left hand
glBegin(GL_POLYGON);
glVertex2f(43.0,52.0);
glVertex2f(48.0,52.0);
glVertex2f(48.0,35.0);
glVertex2f(43.0,35.0);
glEnd();
//draw right hand
glBegin(GL_POLYGON);
glVertex2f(67.0,52.0);
glVertex2f(72.0,52.0);
glVertex2f(72.0,35.0);
glVertex2f(67.0,35.0);
glEnd();
//draw left leg
glBegin(GL_POLYGON);
glVertex2f(50.0,31.0);
glVertex2f(56.5,31.0);
glVertex2f(56.5,11.0);
glVertex2f(50.0,11.0);
glEnd();
//draw right leg
glBegin(GL_POLYGON);
glVertex2f(58.5,31.0);
glVertex2f(65.0,31.0);
glVertex2f(65.0,11.0);
glVertex2f(58.5,11.0);
glEnd();
glFlush();
}
void CALLBACK myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(30.0,85.0,0*(GLfloat)h/(GLfloat)w,
70.0*(GLfloat)h/(GLfloat)w,-10.0,10.0);
else
glOrtho(30.0*(GLfloat)w/(GLfloat)h,
85.0*(GLfloat)w/(GLfloat)h,0.0,70.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
调整窗口的时候,所画图象会跑到窗口外,
是不是所画图象都要以原点(0,0)为中心,才能保证所画图象定中窗口中间. |
|