图形学opengl作业-简单机器人&&我的世界简化版

 

凭借着图形学的课,这学期有幸接触了opengl,稍微搞了一些东西,也算入了个门。

直接看代码就行,和上一篇一样没什么高深的算法,不过对于初学者来说要花时间熟悉语法。

背景音乐用的fmod,fmod用多个声道时网上没什么比较清晰的教程,建议用bass。

(刚开始为了找解决方案,还特地买了个mp3转mid转换器,这软件是可以用的,就是还是解决不了根本问题,顺便贴出来分享下click here~)

本篇两个作业用的vs2013,一些库和头文件都需要自己配。

先上几个效果图吧,一大坨代码附在最后。(大神请绕道)

 

 

-----------------------------------完结分割线----------------------------------------------

接下来就是厉害的东西了,主笔是我同组的另外两位大神,我是最水的一个。

一些比较难的碰撞检测、阴影效果、地形管理(地形是无限延伸的)都是他们的成果,除此之外还有重力设置方块渲染相机aabb包围盒啥的,框架的搭建也是属于继承那种偏向于项目的东西,我是第一次接触这些东西,就不班门弄斧了,就做了个音效界面还被嫌弃T T。。

 

这是我上大学以来见过的最牛逼的东西,老实说刚开始听到ys说要做这个时我是震惊的,没想到真的做出来了2333666。。

对我来说也没什么别的想法了,能和这些大神合作本身就是一种幸运。

 

下面是效果图,由于我最水,就不上代码了,需要的私聊我吧。

 

 

 

 

 

 

-----------------------------------完结分割线----------------------------------------------

最后是一大坨robot代码:

 

#include <gl/glut.h>
#include <stdlib.h>
#include <stdio.h>

#include "fmod.h"			// 音频库的头文件
#pragma comment(lib, "fmodvc.lib")	// 把音频库加入到链接器中

#define SOLID 1
#define WIRE 2
#define LEFT 1
#define RIGHT 2

FSOUND_STREAM *mp3back;		// 背景音乐 *.mp3格式

int moveX;
int spinX = 0;
int larm = 0, rarm = 0;
bool flag = false;//判断左右
bool limb = true;//判断肢体是上身还是下身,默认上身
bool flag0 = false;//标记是否复位
float dis = 0;
float step = 0;
int weapon = 0;


void init()
{
	//定义光源的颜色和位置
	GLfloat ambient[] = { 0.5, 0.8, 0.1, 0.1 };
	GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
	GLfloat position[] = { -80.0, 50.0, 25.0, 1.0 };
	//选择光照模型
	GLfloat lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 };
	GLfloat local_view[] = { 0.0 };
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glShadeModel(GL_SMOOTH);
	//设置环境光
	glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
	//设置漫射光
	glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
	//设置光源位置
	glLightfv(GL_LIGHT0, GL_POSITION, position);
	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
	glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
	//启动光照
	glEnable(GL_LIGHTING);
	//启用光源
	glEnable(GL_LIGHT0);
}

//画球
void drawBall(double R, double x, double y, double z, int MODE) {
	glPushMatrix();
	glTranslated(x, y, z);
	if (MODE == SOLID) {
		glutSolidSphere(R, 20, 20);
	}
	else if (MODE =
  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值