example.cpp

来自「本书所附光盘的内容包含了开发实例的所有程序源码」· C++ 代码 · 共 94 行

CPP
94
字号
#include "windows.h"
#include "gl/gl.h"
#include "gl/glu.h"
#include "gl/glaux.h" 

void myinit(void); 
void CALLBACK display(void); 
void CALLBACK reshape(GLsizei w,GLsizei h); 
void CALLBACK left(void);	//按 LEFT 
void CALLBACK right(void);	//按 RIGHT 
void CALLBACK up(void);		//按 UP 
void CALLBACK down(void);	//按 DOWN 

static double xPos=0.0;
static double yPos=0.0;

void myinit(void) 
{ 
	auxInitDisplayMode(AUX_SINGLE|AUX_RGBA); 
	auxInitPosition(0,0,200,200); 
	auxInitWindow("Example"); 
} 

void CALLBACK reshape(GLsizei w,GLsizei h) 
{ 
	if (w>h)
		glViewport(0,0,h,h); 
	else
		glViewport(0,0,w,w); 
} 

void draw()
{
	glBegin(GL_TRIANGLE_STRIP);
	//画连续填充的多个三角 
	glColor3f(1.0,0.0,0.0); 
	glVertex3f(0.8,-0.5,0.0); 
	glColor3f(0.0,1.0,0.0); 
	glVertex3f(-0.8,-0.5,0.0); 
	glColor3f(0.0,0.0,1.0); 
	glVertex3f(0.0,0.8,0.8); 
	//第一个三角 

	glColor3f(0.0,1.0,1.0); 
	glVertex3f(0.6,0.8,-0.8); 
	//第二个三角 

	glColor3f(1.0,1.0,0.0); 
	glVertex3f(0.8,-0.5,0.0); 
	//第三个三角 

	glEnd(); 
	glFlush(); 
}

void CALLBACK display(void) 
{ 
	glClearColor(255.0,255.0,255.0,0.0); 
	glClear(GL_COLOR_BUFFER_BIT); 
	glLoadIdentity(); 
	glTranslatef(xPos,yPos,0.0); 
	draw(); 
}

void CALLBACK left(void) 
{ 
	xPos=xPos-0.05; 
} 

void CALLBACK right(void) 
{ 
	xPos=xPos+0.05; 
} 

void CALLBACK up(void) 
{ 
	yPos=yPos+0.05; 
} 

void CALLBACK down(void) 
{ 
	yPos=yPos-0.05; 
} 

void main(void) 
{ 
	myinit(); 
	auxKeyFunc(AUX_LEFT,left); 
	auxKeyFunc(AUX_RIGHT,right); 
	auxKeyFunc(AUX_UP,up); 
	auxKeyFunc(AUX_DOWN,down); 
	auxReshapeFunc(reshape); 
	auxMainLoop(display); 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?