OpenGL织梦之旅【第0章】前言

OpenGL织梦之旅【第二章】第2节.实现动画 在上一节中,我们知道了怎么在OpenGL程序里,画一些基本的图形,并且画了一个钟表出来。然而,这个钟的时间是我们事先给它的,所以它只能显示一个固定的时间。所以,这一节我们将来学习怎么让画面动起来!        我希望这个表能够获取系统时间,并且随着系统时间的改变,指针的读数也会改变。        在实现动画这一块,OpenGL给我们提供了双缓冲。当A缓冲区显示时,B缓冲区正在绘制图形。当B 阅读详情

第0章.前言

       从世界上第一款电脑游戏《TennisForTwo》诞生起,游戏便逐渐变成了人们的一种新的娱乐方式。

       而如今,游戏已经发展成为了一个很庞大的产业。相信大多数人和笔者一样,小时候接触了FC红白机起,便被那花花绿绿的游戏场景,充满传奇色彩的游戏故事,以及性格特点鲜明的游戏人物所吸引。

       电子游戏给笔者的童年留下了大片大片美好的回忆。FC平台的天使之翼、热血系列,经典的FF1&2&3,马里奥,魂斗罗,双截龙......PS上的蛊惑狼1&2&3&赛车&嘉年华,合金弹头系列,合金装备,天诛,生化危机,恶魔城,寄生前夜......以及笔者最喜欢的《最终幻想9》,一直到现在都还很喜欢FF9的故事,游戏系统,人物设定。

       而后,在学习了计算机编程以及OpenGL以后,编写一个属于自己的小游戏变成了可能。

     OpenGL的全称是“OpenGraphicsLibrary”,是一个专业的图形程序接口,且跨平台。目前笔者的程序有一部分便是在Linux下编写运行的,Windows当然也能正常运行。学习OpenGL开发图形程序,仅需要c语言基础,并且简单易懂,相对与DirectX,学习门槛低很多。

     笔者目前是一名本科在校大学生,对游戏情有独钟。本系列博文属于是学习笔记类的文字,用于记录自己的OpenGL学习历程,目测一周一更。如果各位看官,有和笔者一样的梦想,或是希望对OpenGL编程有所了解,不妨随笔者一起,揭开OpenGL的神秘面纱,编织一个属于自己的游戏世界。


作者:plusplus7

时间:2012年11月19日

OpenGL织梦之旅【第四章】第1节.设置视点函数gluLookAt 在做所有的事情之前,我们必须要了解怎么在3D的世界中绘图。这也是为了帮助我们调整视点,不然调来调去都是黑框...        3D世界中的坐标系也是笛卡尔坐标系,y轴就像是现实世界中的“高低”,而x和z像是地面的坐标。        我们写一个DrawBox函数,这函数负责绘制一个正方体。 void DrawBox() { glBegin(GL_POLYGON); 阅读详情

相关推荐

OpenGL织梦之旅【第四章】第2节.简单的3D动画

上一小节中,我们已经成功地搭建好了一个“小剧场”,“观众席”已经设置好了,但是“演员”还没有到位。所以这一小节,我们就来请一些“演员”,让他们做一些“动作”。         还记得读取纹理那章的内容吧~2D纹理在这里同样是可以使用的。为了方便,我把LoadBitmap函数放到了"bmpLoader.h"中,这样方便调用。         在bmpLoader.h中: #include #

仰望圣光的plusplus7 1530

OpenGL织梦之旅【第一章】使用glut工具包配置OpenGL环境

第1章.使用glut工具包配置OpenGL环境       GLUT是一个方便实用的opengl工具包,它可以帮助你快捷地建立窗口,接受键盘鼠标响应,并且不受平台限制。对于我们初学者来说,使用这个包可以帮助我们很快地入门。当我们对程序有更高的需求时,我们再学习怎么样搭建基于windows应用程序的opengl程序框架。       下面以VC6.0为例,说明安装glut的步骤:

仰望圣光的plusplus7 1899

OpenGL织梦之旅【第三章】第2节.循环显示图片

这节我们将读取几个图片,生成一个纹理集,然后让程序循环显示图片。       为了方便,我直接把图片的数量和每个图片的名字保存在一个txt文档里面,方便程序地读取。       如:         在init函数中,打开data.txt,读取图片的数量和图片的名字,然后调用LoadBitmap函数,把所生成的纹理保存在一个容器vector中,然后在Update函数中,控制显示的

仰望圣光的plusplus7 1137

OpenGL织梦之旅【第三章】第1节.纹理贴图

在了解纹理贴图之前,我们先要对BMP位图文件要有一定的了解。在Windows中,BMP格式是一个很常见的图像文件储存格式。位图文件由4个部分构成:位图文件头,位图信息头,彩色表以及定义位图的字节列阵。24位的真彩色图像不使用彩色表,所以可以暂时不用管它。    我们写个函数 int LoadBitmap(constchar *file)       图像bmp文件的地址是file,返

仰望圣光的plusplus7 1675

OpenGL织梦之旅【第三章】第3节.实现截图功能

对于上一章的纹理贴图,不少朋友给我说,有些图片可以成功读取,但是显示不正常。         例如这只猪:         解决方案是这样的。造成这个问题的原因是因为像素在bmp图片中保存格式为BGR,gluBuild2Dmipmaps函数会要求你提供颜色的组成类型(GL_RGB),而某些OpenGL版本的中并没有GL_BGR或GL_BGR_EXT,所以在LoadTexture函数中,

仰望圣光的plusplus7 944

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

OpenGL织梦之旅【第二章】第1节.绘制基本的几何图形

第2章.编写一个的钟表程序 第一节.绘制基本的几何图形         矩形、三角形、圆形等这些都是经典的几何图形,他们都由线构成的(圆形看成是有很多根短线收尾相连围成的),而线都是点构成的。想起了某一年狗血的高考题=。=....而在OpenGL中画线很简单,你指定线两端的顶点即可。         指定顶点的函数如下:                 glVertex2d

仰望圣光的plusplus7 1423

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

OpenGL织梦之旅【第二章】第3节.指定颜色以及定义视口

第三节.指定颜色以及定义视口       在这一节中,我们将对时钟程序进行一个完善工作。       1.这个时钟整体都是白色的,怎么样给它上色呢?       2.当尝试改变窗口大小,窗口的宽和高不相等时,时钟也相应地变成了椭圆,怎么样固定一下时钟的大小呢?       在计算机屏幕上,屏幕上的每一个像素会发射不同数量的红,绿,蓝光(RGB)。在OpenGL中R,G,B三个值

仰望圣光的plusplus7 1045

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查)

本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参数及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。

php55的博客 895

【Claude Code】Claude Code 使用指南

本文介绍了AI编码助手Claude的基础和进阶操作指南。基础部分涵盖启动命令、模式切换(自动编辑/Plan/Yolo模式)、资源监控等核心功能,重点讲解了斜杠命令的使用方法。进阶操作详细说明了CLAUDE.md文件的创建与管理,包括项目规范、代码风格等内容的配置,以及如何通过该文件建立持久上下文。同时提醒了使用过程中的安全风险,建议通过配置文件限制AI对关键代码的访问权限。全文提供了完整的操作指引和安全建议,帮助开发者高效安全地使用Claude进行编码辅助。

大家好,我是敖云岚,一个沉迷代码的 “技术玩家”。擅长 Java、C++ 开发,对 MySQL、Redis、RabbitMQ 等技术也颇有研究。博客里既有硬核技术干货,也有诙谐幽默的编程日常分享。愿和你一起,笑着学技术,快乐敲代码! 1万+

OpenGL织梦之旅【第三章】第4节.glut键盘鼠标响应

对于一个游戏来说,能够和玩家进行交互是很重要的。通过键盘、鼠标和手柄,游戏 程序接受玩家的各项指令,从而做出反应。在控制台程序中,我们可以使用kbhit()函数来判断玩家是否有输入,如果有,再调用getch函数就可以接受到玩家的输入信息。         如: if (kbhit() != 0) //按下一个键 {

仰望圣光的plusplus7 2483

【FPGA】高效捕捉信号边沿的硬件实现技巧

本文深入探讨了FPGA设计中高效捕捉信号边沿的硬件实现技巧。核心在于通过“打两拍”同步器处理亚稳态风险,并详细解析了上升沿、下降沿及双边沿检测的基础原理与Verilog实现。文章进一步介绍了脉冲展宽、数字滤波等高级优化方案,并结合UART起始位检测与按键消抖等实战场景,提供了可靠的代码范例与调试心得,帮助工程师构建稳定可靠的边沿检测模块。

weixin_29165465的博客 225

Python 之 OpenGL程序环境

Python+OpenGL,想想都觉得很刺激~~         首先还是下载PyOpenGL包:http://pypi.python.org/pypi/PyOpenGL/3.0.2        在windows下,安装还是很简单的,安装程序会主动找到你的python目录,所以可以直接下一步。        安装好了后,就来写一个脚本测试一下~ test.py from OpenGL.

仰望圣光的plusplus7 1万+

DIY T12烙铁头驱动难题:用几个电容二极管,搞定NMOS上管驱动(附Multisim仿真)

本文详细介绍了如何利用电荷泵电路解决DIY T12烙铁头驱动中的NMOS上管驱动难题。通过巧妙组合电容和二极管,构建低成本高效的升压电路,实现栅极高压驱动需求。文章包含具体电路设计、元件选型建议、实际搭建注意事项以及Multisim仿真验证,为电子爱好者提供了一套完整的解决方案。

weixin_33640562的博客 334

智能检查点优化:动态频率与差异化存储的断点续训实践(模型训练丨容错机制丨人工智能)

本文深入探讨了大规模模型训练中智能检查点优化的核心实践。针对传统固定频率保存导致的存储浪费与恢复缓慢问题,提出了基于损失变化率的动态频率算法与分层差异化存储策略。通过PyTorch代码示例,详细展示了如何实现动态调度与增量保存,有效降低存储成本,并确保训练中断后能快速、可靠地恢复,显著提升训练任务的容错能力与经济效益。

weixin_29072299的博客 333

python中变量不需要事先声明_Python 之 OpenGL程序环境

Python+OpenGL,想想都觉得很刺激~~在windows下,安装还是很简单的,安装程序会主动找到你的python目录,所以可以直接下一步。安装好了后,就来写一个脚本测试一下~test.pyfrom OpenGL.GL import *from OpenGL.GLU import *from OpenGL.GLUT import *def Draw():glClear(GL_COLOR_BU...

weixin_39969953的博客 243

ABB机器人ModbusTCP通信实战:如何高效传输Float数据到PLC(附完整代码)

本文详细介绍了ABB机器人通过ModbusTCP协议高效传输Float数据到PLC的实战方法,包括底层逻辑解析、RAPID程序架构设计、PLC服务器配置及现场调试技巧。特别针对浮点数据传输中的字节顺序问题提供了解决方案,并附有完整代码示例,助力工程师快速实现工业自动化设备间的高精度数据交互。

weixin_30836759的博客 482

游戏开发基本观

游戏平台与编程语言之关系 目前游戏平台主要有如下分类: 个人主机平台:Windows、Linux、Mac OC 移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian 专业主机平台:Xbox、PlayStation、Will等 不同平台上的编程语言一般各有差异,但基本上都是C/C++衍生语言。如Android主流JAVA语言,iOS主流Ob

梦幻DUO的游戏开发之路 1358

rosbag分析传感器数据的时间同步情况方法

ROS传感器时间同步分析流程:通过rosbaginfo初步检查bag文件信息,使用rqt_bag可视化时间线分布,采用rostopicecho或Python脚本提取各传感器时间戳并计算时间差统计值(均值/最大差/标准差),最后分析接收与采样时间延迟。量化评估同步精度,识别固定偏移或随机抖动问题,确保多传感器数据对齐,为后续融合处理提供可靠数据基础。

start_up_go的博客 201

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【博客搬家】本博客已全面停止更新,新博客地址 plusplus7.com

新博客地址:http://www.plusplus7.com

仰望圣光的plusplus7 1532

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OpenGL织梦之旅【第二章】编写一个的钟表程序

第2章.编写一个的钟表程序         在配置好了glut环境以后,运行了第一个opengl程序以后,我们现在就来尝试编写一个实用一点的程序——时钟程序。 如图:         制作这样一个程序,对于初学者来说,感觉上或许很难,但是只要我们一步一步地慢慢来,总会有熟练掌握的那一天。“包子要一口一口地吃”,韩顺平老师经常这样说。         所以大家不要急,咱们这一章分为3

仰望圣光的plusplus7 1092

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OpenGL织梦之旅【第四章】编写一个自己的小剧场

先来解释一下这个标题,在这一章我们要掌握一些OpenGL 3D的基本要点。在这一章中,我们进入3D世界,制作一些简单的3D动画,然后实现可以自由调节位置和视角,类似于在剧场中观看动画的感觉。         在现实生活中,我们通过眼睛观察事物,然而也有可能我们是歪着头在看这件事物。如果把现实世界坐标化,我们的眼睛有个坐标eyeX,eyeY,eyeZ,我们观察的事物有个坐标viewX,viewY,

仰望圣光的plusplus7 902

OpenGL织梦之旅【第三章】编写一个显示图片的程序

在前两章的学习里面,我们掌握了在GLUT函数库的帮助下,创建窗口和绘制一些简单的几何图形,然后又调用glutIdleFunc注册了一个回调函数,最终使得画面动了起来。在大多数游戏中,游戏的画面并不是这些简单的图形,而是一些精美的图片。比如,砖墙,草地等。如果我们需要绘制一面砖墙,就要画几千个矩形并且着色。纹理贴图可以帮助我们把一张砖墙的图片映射到一个多边形上。于是,在纹理贴图的帮助下,我们便能很轻

仰望圣光的plusplus7 857
上一篇: POJ 2133 Cow Imposters
下一篇: OpenGL织梦之旅【第一章】使用glut工具包配置OpenGL环境
plusplus7
博客等级 码龄15年 59粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值