自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 OpenGL加载显示第三方建模资源

前面的文章我们一直都在使用方形的盒子,因为从几何的角度上来说,它是相对简单的。但是转念一想,很多动画和游戏场景是由非常多复杂的集合体构成的(好像不是这么一回事),但是如果我们在我们的程序当中手动的去添加几何体顶点数据的话工作量会非常的大(如果你真的想怎么做的话其实也可以),我们通常的选择是在第三方建模软件当中建好我们需要使用的模型,然后再导入加载到我们自己图形程序当中,此篇文章笔者就为大家介绍如何在自己的图形程序当中加载第三方建模资源。

2025-01-16 17:35:57 751

原创 OpenGL手电筒效果

前面一篇文章当中我们介绍了,在光照效果当中的经常要使用到的材质系统。接下来我们介绍一下重要的两种光源,一种是点光源,另一种是聚光,恐怖游戏里面标配的核能手电筒就是聚光。本篇文章会实现手电筒光照效果,大家也就了解游戏里面的手电筒的光照是怎么回事了。

2025-01-07 19:31:43 1081

原创 OpenGL材质系统和贴图纹理

上一篇文章当中笔者为大家介绍了风氏光照模型,相信大家也发现了光照着色器当中有设置有很多控制光照强度的参数,而所谓的材质系统就是我们可以人为的去调节这些参数,让一个物体的反光效果能够更加接近我们现实生活当中的一些物体。

2025-01-05 15:50:05 829

原创 OpenGL光照(风氏光照模型)

光照,在计算机图形当中一直都是很难得话题,在一些大的游戏公司里面有专门研究光照算法得计算机工程师,笔者在计算机图形方面还只是一直菜鸟,只能给大家介绍一些比较简单的常用的光照模型,此篇文章为大家介绍风氏光照模型。

2025-01-03 15:00:56 697

原创 OpenGL入门最后一章观察矩阵(照相机)

此片文章看完OpenGL入门基础篇已经写完了,相信你也可以做一个像样的游戏出来了,比如以前红白机上的一些游戏,可能觉得很Low,但凡事都要一步一个脚印,游戏也是一路发展过来的,没有多少人生来就特别牛。

2024-12-31 18:10:19 1302

原创 OpenGL变换矩阵和输入控制

在前面的文章当中我们已经成功播放了动画,让我们的角色动了起来,这一切变得比较有意思了起来。不过我们发现,角色虽然说是懂了起来,不过只是在不停地原地踏步而已,而且我们也没有办法通过键盘来控制这个角色来进行移动,现在整个项目处在一个只能看不能玩的处境。那么这篇文章,笔者将为大家介绍如何通过键盘输入来控制我们绘制的角色。

2024-12-29 20:16:57 1088

原创 OpenGL子纹理与动画

前面的文章我们在矩形上贴上了纹理,这一次我们想办法让这些纹理动起来。在这里我们先来介绍一下子纹理,和动画的原理。

2024-12-17 13:08:34 1056

原创 OpenGL给矩形贴上纹理

前面几次,我们在创建的窗口上绘制了一个三角形,并且可以通过颜色罗盘去改变它的颜色,不过这还是有一些太单调了,笔者在这里告诉大家如何给绘制的几何图形贴上纹理。这里主要是2D平面纹理,至于3D的纹理,笔者还没有去试过,有兴趣朋友可以自己去研究一下,接下来我们看一下需要哪些步骤。

2024-12-09 19:03:35 1133

原创 OpenGL编译用户着色器shader

上面虽然是一个着色器文件,其实这里面写了两个着色器,一个是顶点着色器,一个是片元着色器。下面的是顶点着色器,下面的是片元着色器。为什么这两个要一起写了?前面也介绍了,这两个着色器是必需要有的,所以笔者推荐这个着色器最好就是一起写。顶点着色器必须要有输入数据,片元着色器必须要有输出数据,不然屏幕上就看不到任何东西。着色器使用,主函数代码如下glfwInit();(void)io;//需要初始化GLADif (!return -1;while (

2024-12-07 16:19:43 1456

原创 OpenGL渲染结果移至ImGui窗口上

已经能够熟练使用OpenGL进行渲染的朋友可能会发现,如果想要修改当前的渲染结果,或者改变一下渲染图形的位置,那么能做的就是重新编写代码。但是如果需要经常的改动的话,这毫无疑问会是一件非常繁琐的事情,有没有什么简单好用的窗口控件来解决这个问题了,当然是有的,那就是。虽然这个框架并不像QT那么大名鼎鼎,但是它足够轻便好用。

2024-12-05 16:18:13 2096 2

原创 OpenGL粒子效果

看到的这些粒子就是一个个小方块,我们需要他们能够跟随鼠标生成,方块的颜色进行渐变,生成过后随机向某一个方向进行移动,并且在屏幕上存在的时间是由1秒钟。方块的属性//方块的具体位置//移动的速度,速度就决定了移动的方向//开始的颜色和结束的颜色//旋转的角度//开始时候的大小,结束时候的大小//固定存在的时间//剩余存在时间//此方块是否处在被激活的状态//粒子方块池//现阶段指向粒子方块池中的哪一个粒子方块池更新if (!particle.Active) //确认这个粒子是否被激活。

2024-10-30 14:36:32 747

原创 OpenGL推箱子小游戏

我们直接将整个程序运行起来,进入到游戏当中。游戏UI时使用ImGui这个轻量化的GUI框架来实现的。整个界面有开始界面,暂停界面,过关界面,通关界面游戏开始界面暂停界面过关界面通关界面游戏规则推箱子这个游戏相信大家以前或多或少都玩过,这里还是简单介绍一下,玩家控制角色,将箱子推动到指定位置,就算成功,角色不能拉动箱子,墙壁也是无法被推动的。游戏设计介绍角色:粉色的方块(玩家),绿色的方块(箱子),橙色的方块(目的地),蓝色的方块(空地,可以在上面进行移动),白色方块(墙壁)。

2024-09-26 08:23:23 1144

原创 Premake自动部署OpenGL项目

workspace "OpenGLInitial" //对应的解决方案的名称architecture "x86_64" //程序采用的架构configurations{ //配置管理器"Debug","Release"project "GLAD" //项目的名称location "GLAD" //指定文件的路径kind "StaticLib" //输出形式 (这里是静态库)language "C++" //编码语言项目名称指定项目文件路径使用的语言和输出的形式。

2024-09-14 16:46:59 1063

原创 Opengl+GLFW+GLAD+Visual Studio 配置

学习计算机图形学的朋友们基础到的第一个图形库因该就是Opengl,毕竟Opengl相对DirectX和Valuken要简单不少。但是Opengl这个库当中的函数到底应该如何调用,成了很多朋友们学习路上的拦路虎,再次笔者就交大家如何配置第三方库来调用Opengl当中的函数。

2024-08-28 15:29:32 2384 5

原创 C++矩阵运算2

矩阵的行列式计算,很多朋友们在学习的时候基本上只记2阶或者3阶行列式如何进行运算,因为考试的时候基本上就是考这些,3阶以上的行列式的计算的量确实太大了,不过这个事情我们可以交给计算机来做,只要将公式转换为代码那么无论是几阶的行列式都可以顺利的进行计算了。

2024-08-24 12:19:43 523

原创 C++矩阵运算1

笔者的矩阵算法并不是很好,网上也有很多开源的矩阵计算项目。笔者更希望这个程序的设计能给大家带来一些启发。

2024-08-20 20:11:39 1020

原创 C++高维数组

所谓的高位数组就是,一个数组存储的其他数组的地址。下面以二维的数组为例,请看下面的代码示例//二级指针指向一个整型指针数组i < 5;i++)//每个指针指向一个大小为5的数组i < 5;j++)从上面对高维数组的遍历当中可以看到,这样就可以像使用矩阵那样去使用这个高维数组。我们完全可以,对地址进行一些偏移计算,让一维数组伪装成高维的数组,这样可以提高程序的运行效率。通过一些封装,我们不再需要手动去管理数组的规模。

2024-08-14 16:57:39 1945 1

原创 编译JSONCPP源码

上面的步骤光是考虑程序运行的话,其实引入静态库和头文件也可以办到,但是对于一个严格的项目而言能够明确知道源代码也是相当重要的。所以进行上面步骤的目的就是为了能够在自己的项目当中调试第三方框架的源代码。

2024-08-07 08:52:52 1099

原创 详谈C++指针(2、指针与变量的生命周期)

C++指针功能很强大,但是在使用的时候要小心谨慎,使用指针读写数据的时候一定要考虑变量的生命,如果对于当前的项目而言传统指针实在难以管理,就可以考虑使用智能指针,但是传统指针依然有自己的优势,我们因该视具体的情况来使用传统指针和智能指针。

2024-08-05 17:52:22 1740

原创 详谈C++指针(1、指针到底是什么)

市面上的很多文章或者是教材都会这样定义指针的:指针是一个变量,存储的数值是变量的地址。声明的方式是type必须是C++有效类型。其实要是只是想要使用指针的话,知道上面这些定义也是足够了,但是笔者希望大家对指针能有更深一点的理解,遇到的一些疑惑才能迎刃而解。前面的定义当中提到指针存放的是地址,那么地址它又是什么类型的了?我们要存放整形数据的时候使用的是int,存放浮点型数据的时候使用的是float或者是double存放布尔型数据的时候使用的是bool。

2024-08-03 17:06:14 1061

原创 C++更快的Vector容器

相信很多写过C++程序的朋友对这个容器并不会感到陌生,可能有很多的新人朋友刚开始对于容器的使用方式和下面的案例是差不多的。Book book1("格林童话", 1);Book book2("安徒生童话", 2);Book book3("老人与海", 3);Book book4("肖申克的救赎", 4);return 0;当我们想要把某个数据类型的数据制作成一个集合的时候这样做也是无可厚非的,而且这种方式使用起来也是非常的简单。在使用。

2024-08-02 15:56:50 894

原创 简单基准测试(C++)

市面上有很多强大的IDE都有内置的基准测试工具,但是有些小团队可能给不出那么多的经费购买IDE,那么这个方法在项目开发的前中期也许会是一个不错的选择。

2024-08-02 00:08:43 545 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除