GL回想

博主回忆了学习OpenGL的历程,从设立目标到分析、行动、调整,最终完成毕业设计。过程中,博主强调了搜索技巧、动手实践、英语能力在学习中的重要性,并通过学习3D基础知识、模型制作、人物动画和物理碰撞,逐步建立起对3D技术的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习GL的一些总结

在这个高速发展的社会,很多人都想着掌握各种技能,对内提升自己的内容,自己的价值,对外提升自己的salary,就业机会
学习,它应该是一个学而时习之的过程,是一个提出目标,分析目标,行动,调整,之后达到目标的过程。

目标

回想08~09年,当时的目标是想用GL做毕业设计,实现场景的一个简单3D场景+人物的动画还有简单的物理碰撞处理,物理碰撞部分是通过Lua进行配置。

分析
  • 第一:需要学习相应的GL基础知识

当时国内的资料非常非常少,那么最快捷的方式还是网络,百度就别想了,接近与0资源,那么只能依赖于google了,首先是中文的查询,那么检索相关的知识就需要进行考虑,比如OpenGL, OpenGL 教程, OpenGL 例子,不过这个还是很少,因为google上的资源英文还是最多的,那么进行的是Opengl demo, opengl tutorial, opengl demo等.

  • 第二:需要学习相应的搭建场景的软件

当时很多都是max的资料,而且国内仙剑系列也是用上了3D的基本不过在pc上直接使用的是dx的技术,而且dx有相应的x格式文件模型处理,GL只是统一的接口,没有对应的模型格式动画格式,这就一大难题了。

  • 第三:人物动画的处理,既然dx的x格式不能用,那么就需要考虑换一种方式去处理才行。<
#include <glut.h> #include <stdio.h> #include <gl.h> #include <math.h> int i, j; const int N = 40; float x[N], y[N]; #define PI 3.1416 void glRect(int leftX, int leftY, int rightX, int rightY) { glBegin(GL_LINE_LOOP); glVertex2d(leftX, leftY); glVertex2d(rightX, leftY); glVertex2d(rightX, rightY); glVertex2d(leftX, rightY); glEnd(); } void glArc(double x, double y, double start_angle, double end_angle, double radius) { glBegin(GL_LINE_STRIP); double delta_angle = PI / 180; for (double i = start_angle; i <= end_angle; i += delta_angle) { double vx = x + radius * cos(i); double vy = y + radius * sin(i); glVertex2d(vx, vy); } glEnd(); } void glCircle(double x, double y, double radius) { glArc(x, y, 0, 2 * PI, radius); } void glTri(int x1, int y1, int x2, int y2, int x3, int y3) { glBegin(GL_LINE_LOOP); glVertex2d(x1, y1); glVertex2d(x2, y2); glVertex2d(x3, y3); glEnd(); } void glLine(int x1, int y1, int x2, int y2) { glBegin(GL_LINE_STRIP); glVertex2d(x1, y1); glVertex2d(x2, y2); glEnd(); } void display(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glLineWidth(3.0); // 绘制熊猫的身体 glColor3f(0.0, 0.0, 0.0); glCircle(0, 0, 100); // 绘制熊猫的头部 glColor3f(0.0, 0.0, 0.0); glCircle(0, 120, 60); // 绘制熊猫的眼睛 glColor3f(0.0, 0.0, 0.0); glCircle(-30, 140, 15); glCircle(30, 140, 15); // 绘制熊猫的眼珠 glColor3f(1.0, 1.0, 1.0); glCircle(-30, 140, 5); glCircle(30, 140, 5); // 绘制熊猫的鼻子 glColor3f(0.0, 0.0, 0.0); glCircle(0, 110, 10); // 绘制熊猫的嘴巴 glColor3f(0.0, 0.0, 0.0); glArc(0, 90, 0, PI, 20); // 绘制熊猫的耳朵 glColor3f(0.0, 0.0, 0.0); glCircle(-60, 180, 20); glCircle(60, 180, 20); // 绘制熊猫的手臂 glColor3f(0.0, 0.0, 0.0); glRect(-120, -40, -80, 40); glRect(80, -40, 120, 40); // 绘制熊猫的腿 glColor3f(0.0, 0.0, 0.0); glRevsc++运行结果图片
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值