|
不多说:看文件
VxWorks下进行OpenGL移植配置ourdev_699706IGHUCP.doc(文件大小:35K) (原文件名:VxWorks下进行OpenGL.doc)
点击此处下载 ourdev_699707KCWAQ3.pdf(文件大小:814K) (原文件名:OpenGL编程(推荐).pdf)
点击此处下载 ourdev_699708WTNKWD.doc(文件大小:68K) (原文件名:OpenGL API.doc)
VC6.0++下配置OpenGl开发环境(vs2005也一样得)ourdev_699709I7BGTM.rar(文件大小:3.85M) (原文件名:openGL库文件.rar)
VC6.0++下 OpenGL例子:
#include <GL/glew.h> // 包含最新的gl.h,glu.h库
#include <GL/glut.h> // 包含OpenGL实用库
#include <stdlib.h>
#include <GL/glut.h>
/******************************************************
*************生产移动的方块*********************
*******************************************************/
#define TIME_TICK 100
//方块初始位置
GLfloat x1=0.0f;
GLfloat y1=0.0f;
GLfloat rsize=25;
//方块步进大小
GLfloat xstep=1.0f;
GLfloat ystep=1.0f;
//追踪方块长宽变化
GLfloat xsize;
GLfloat ysize;
/********************************************************/
/********************************************************/
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//用当前颜色清除颜色缓冲区即设定窗口背景色
glColor3f(1.0f,0.0f,0.0f);//参数分别RGB颜色值
glRectf(x1,y1,x1+rsize,y1-rsize);//填充模式的方块
glutSwapBuffers();//刷新双缓冲绘图命令并进行交换
glFlush();//刷新OpenGL命令列队
}
/********************************************************/
/********************************************************/
static void TimeFunction(int value)
{
if(x1>xsize-rsize||x1<-xsize)//到达左边或右边时翻转
xstep = -xstep;
if(y1>ysize||y1<-ysize+rsize)//到达顶边或底边时翻转
ystep = -ystep;
x1 +=xstep;//实质移动方块
y1 +=ystep;
//边界检查 为防止方块在反弹时窗口变小 使之出现在新的裁剪区域之内
if(x1>(xsize-rsize+xstep))
x1 = xsize-rsize-1;
if(x1<-(xsize+xstep))
x1 = -xsize-1;
if(y1>(ysize+ystep))
y1 = ysize-1;
if(y1<-(ysize-rsize+ystep))
y1 = -ysize-rsize-1;
//用新的坐标重新绘图
glutPostRedisplay();
glutTimerFunc(TIME_TICK,TimeFunction,1);
}
/********************************************************/
/********************************************************/
static void ChangeSize(GLsizei w,GLsizei h)
{
float whi;
if(h==0) h=1;
glViewport(10,0,w,h);//根据窗口设置视区尺寸
glMatrixMode(GL_PROJECTION);//重设坐标系统
glLoadIdentity();
whi = w/h;
if(w<=h)//建立修剪空间范围
{
xsize = 100;
ysize =100/whi;
glOrtho(-100.0f,100.0f,-ysize,ysize,1.0f,-1.0f);
}
else // 左 右 底 顶 近 远
{
xsize = 100/whi;
ysize = 100;
glOrtho(-xsize,xsize,-100.0f,100.0f,1.0f,-1.0f);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
/********************************************************/
/********************************************************/
static int glClearWind(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
}
/********************************************************/
int main(void)//int argc,char**argv
{
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//初始化窗口显示模式
glutCreateWindow("彩色三角形");//创建窗口
glutDisplayFunc(display);//设置当前窗口显示回调函数
glutReshapeFunc(ChangeSize);//设置当前窗口再整形回调函数
glutTimerFunc(TIME_TICK,TimeFunction,1);
glClearWind();
glutMainLoop();//启动GLUT事件处理循环
} |
|