资源简介
opengl绘制的立体树场景,能鼠标键盘互动,立体美观,技术实用
代码片段和文件信息
// class.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include
#include //计算旋转角
#include
#include
#include
#pragma comment(lib“OpenGL32.lib“)
#pragma comment(lib“glu32.lib“)
#pragma comment(lib“glaux.lib“)
GLuint texture[4]; // Storage For One Texture ( NEW )
GLfloat LightAmbient[]= { 0.92f 0.92f 0.38f 0.0f };
GLfloat LightDiffuse[]= { 0.92f 0.92f 0.38f 0.0f };
GLfloat LightPosition[]= { 0.0f 0.0f 1.0f 0.0f };/**/
//angle绕y轴的旋转角允许我们旋转照相机;ratio:窗口宽高比(width/height)
GLfloat xRot; // 绕X轴旋转的角度
GLfloat yRot; // 绕Y轴旋转的角度
//GLfloat LightAmbient[]= { 0.5f 0.5f 0.5f 1.0f };
//GLfloat LightDiffuse[]= { 1.0f 1.0f 1.0f 1.0f };
//GLfloat LightPosition[]= { 0.0f 0.0f 2.0f 1.0f };
int LastXPosLastYPos; //上次鼠标点击处x、y坐标
BOOL IsLBDown = FALSE; //鼠标左键是否按下
static float angle=0.0ratio;
static float x=0.0fy=1.75fz=5.0f; //照相机位置
static float lx=0.0fly=0.0flz=-1.0f; //一个向量用来指示我们的视线方向
static GLint picture_display_list; //一个雪人的显示列表索引/*
void SetupRC()
{
// 设置光源参数
GLfloat ambientLight[] = { 1.0f 1.0f 1.0f 1.0f };//环境光
GLfloat diffuseLight[] = { 0.92f 0.92f 0.38f 1.0f };//漫反射
GLfloat specularLight[] = { 1.0f 1.0f 1.0f 1.0f };//镜面反射
GLfloat lightPos[] = { -1000.0f 1000.0f 1000.0f 1.0f };//齐次坐标中的光源位置
glEnable( GL_DEPTH_TEST ); // 使能深度检测
glEnable( GL_COLOR_MATERIAL ); // 使能材质
glEnable( GL_LIGHTING ); // 使能光照
glLightfv( GL_LIGHT0 GL_AMBIENT ambientLight );
glLightfv( GL_LIGHT0 GL_DIFFUSE diffuseLight );
glLightfv( GL_LIGHT0 GL_SPECULAR specularLight );
glLightfv( GL_LIGHT0 GL_POSITION lightPos );
glEnable( GL_LIGHT0 ); // 使能灯光 0
glColorMaterial( GL_FRONT GL_AMBIENT_AND_DIFFUSE );
glMaterialfv( GL_FRONT GL_SPECULAR specularLight );
glMateriali( GL_FRONT GL_SHININESS 100 );//镜面反射指数
glClearColor( 0.0f 0.0f 0.0f 1.0f ); // 设置背景色
}/**/
#define BLACK 1
#define BROWN 2
#define BLUE 3
#define YELLOW 4
//预定义颜色值
float red=1.0;
float green=0.0;
float blue=0.0;
//响应窗口位置、大小改变事件的回调函输
void processMenuEvents(int option)
{
//option,就是传递过来的value的值。
switch (option)
{
case BLACK :
red = 0.0;
green = 0.0;
blue = 0.0;
break;
case BROWN :
red = 0.55;
green = 0.55;
blue = 0.32;
break;
case BLUE :
red = 0.0;
green = 0.0;
blue = 1.0;
break;
case YELLOW :
red = 1.0;
green = 1.0;
blue = 0.0;
break;
}
}
void createGLUTMenus()
{
int menu;
// 创建菜单并告诉GLUT,processMenuEvents处理菜单事件。
menu = glutCreateMenu(processMenuEvents);//给菜单增加条目
glutAddMenuEntry(“Black“BLACK);
glutAddMenuEntry(“Blue“BLUE);
glutAddMenuEntry(“Brown“BROWN);
glutAddMenuEntry(“Yellow“YELLOW);
// 把菜单和鼠标右键关联起来。
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
void changeSize(int w int h)
{
// 防止被0除.
if(h == 0)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-12-25 14:42 3dtree\
文件 48465 2010-02-14 05:24 3dtree\042.bmp
文件 74373 2010-02-14 05:26 3dtree\044 .bmp
文件 393272 2011-12-29 14:44 3dtree\045.bmp
文件 786486 2005-06-03 16:49 3dtree\5.bmp
文件 94103 2010-02-14 05:35 3dtree\BG.bmp
文件 66614 1999-09-25 20:19 3dtree\Crate.bmp
目录 0 2012-12-25 14:42 3dtree\Debug\
文件 1939 2011-12-27 10:40 3dtree\Debug\StdAfx.obj
文件 245834 2011-12-29 14:45 3dtree\Debug\class.exe
文件 440232 2011-12-29 14:45 3dtree\Debug\class.ilk
文件 67982 2011-12-29 14:45 3dtree\Debug\class.obj
文件 187200 2011-12-27 10:40 3dtree\Debug\class.pch
文件 680960 2011-12-29 14:12 3dtree\Debug\class.pdb
文件 156672 2011-12-29 15:55 3dtree\Debug\vc60.idb
文件 233472 2011-12-29 14:12 3dtree\Debug\vc60.pdb
文件 196664 1999-09-09 03:50 3dtree\FLOOR.BMP
文件 196664 1999-09-27 13:13 3dtree\Ground.BMP
文件 1202 2011-12-27 10:32 3dtree\ReadMe.txt
文件 292 2011-12-27 10:32 3dtree\StdAfx.cpp
文件 667 2011-12-27 10:32 3dtree\StdAfx.h
文件 11185 2011-12-29 14:12 3dtree\class.cpp
文件 4546 2011-12-28 16:30 3dtree\class.dsp
文件 535 2011-12-27 10:32 3dtree\class.dsw
文件 58368 2011-12-29 15:59 3dtree\class.ncb
文件 59904 2011-12-29 15:59 3dtree\class.opt
文件 904 2011-12-29 14:45 3dtree\class.plg
目录 0 2012-12-25 14:42 3dtree\data\
文件 393272 2011-12-29 14:44 3dtree\data\045.bmp
文件 49208 2011-12-29 14:45 3dtree\data\w2.bmp
文件 49208 2011-12-29 14:45 3dtree\w2.bmp
............此处省略0个文件信息
评论
共有 条评论