C++和OpenGL实现3D游戏编程
文章平均质量分 97
3D类RPG游戏允许玩家体验一个庞大的虚拟世界。它们通常具备丰富的游戏内容、高度自由的游戏玩法,以及与其他玩家交流的社交功能。在游戏中,玩家可以扮演各种角色,与其他玩家组队探险、竞技对战,共同书写属于他们的冒险故事。那么我们这里研究一下怎样用C++结合OpenGL去实现一个3D类RPG游戏的设计。
zhooyu
致力于用最简洁的语言,最简单的方式,最易懂的知识,带大家享受编程的快乐。
展开
-
C++和OpenGL实现3D游戏编程【连载1】——初探3D世界
在我学习C++的过程中,研究了一下OpenGL编程,打开了3D世界的编程世界,3D世界的效果还是相当不错。而且OpenGL能够支持跨平台兼容,是不错的学习方向,于是就自己学习了网上的很多教程,并将所有学到的知识运用到自己编程中去,现在正好有时间,就将自己编程中的一些点点滴滴汇总出来,以供大家参考。原创 2024-08-02 12:05:47 · 1108 阅读 · 0 评论 -
C++和OpenGL实现3D游戏编程【连载2】——了解并创建3D空间模型
试想以下,我们如果在玩游戏,出现人物如果会随着程序窗口大小的改变而不断地被拉长或压扁,那将是个多么糟糕的事情。前两个非常的好理解,第一个参数就表示的是你眼睛的位置,第二个参数就表示你要看物体的位置坐标,当然,我们第二个参数可以不确定到具体的物体位置坐标,只要你向前看,视线上的任何一点都可以。说到这里,后期当我们不停地改变眼睛的位置和视线的方向,就产生了视角移动的效果,可以产生人物移动观察世界的效果,类似第一人称射击游戏或RPG游戏人物视角的效果,是不是很有感觉,我们将在后期完善相关代码,随后再详细说。原创 2024-08-05 14:45:46 · 1843 阅读 · 0 评论 -
C++和OpenGL实现3D游戏编程【连载3】——3D空间模型光照初步
上一节课,我们建立了简单的坐标系,同时也显示了一个正方体,但正方体的颜色为纯红色,好像一个平面物体一样,我们这节课就可以加一些光照,并创建更多的模型,使这些物体变得更加立体一些。这里由于没有系统自带的长方体,要自定义创建一个长方体地面。当然,我们现在加的只是一个感官上的地面,后期还要添加玩家在地面上的碰撞检查,我落在地面上,可以顺着地形的不同不断改变能力的高度,遇到障碍物我无法通过,如果遇到了峡谷,人物也可以自由落体势掉落到峡谷底部,但不会掉落无尽深渊的效果。原创 2024-08-07 13:31:58 · 2485 阅读 · 7 评论 -
C++和OpenGL实现3D游戏编程【连载4】——纹理加载常用的三种方式
我们从游戏的角度出发,用C++去了解一下游戏中的功能都是怎么实现的。这一切还是要从自己玩游戏开始说起,此前就玩过一下3D游戏,当时就被游戏里的一些画面和设置深深的吸引了,同时游戏里还有很多很有趣的设定,比如,玩家的视角是怎么移动的?崎岖不平的地图是怎样制作的?人物和物体、地面的碰撞是怎样检测的?鼠标是怎样选中眼前的物体的?魔法技能是怎样释放的?不用加载进度条的无缝世界地图是怎么实现的?带着这些疑问,我们走进了一个OpenGL世界的3D世界。原创 2024-08-19 08:35:18 · 427 阅读 · 15 评论 -
C++和OpenGL实现3D游戏编程【连载5】——纹理坐标、纹理贴图
我们从游戏的角度出发,用C++去了解一下游戏中的功能都是怎么实现的。这一切还是要从自己玩游戏开始说起,此前就玩过一下3D游戏,当时就被游戏里的一些画面和设置深深的吸引了,同时游戏里还有很多很有趣的设定,比如,玩家的视角是怎么移动的?崎岖不平的地图是怎样制作的?人物和物体、地面的碰撞是怎样检测的?鼠标是怎样选中眼前的物体的?魔法技能是怎样释放的?不用加载进度条的无缝世界地图是怎么实现的?带着这些疑问,我们走进了一个OpenGL世界的3D世界。原创 2024-08-26 15:38:34 · 739 阅读 · 10 评论 -
C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图
上一节我们讨论了纹理贴图的相关基础操作,但上一节的纹理贴图操作基本上都是规则图形,包括圆形和球形虽然复杂一点,但是它也是规则的。这一节课我们要讨论一下,怎么在不规则图形上纹理贴图,就比如文章下图的心形纹理贴图,以及纹理的平移、旋转、放大缩小功能。原创 2024-08-27 07:16:45 · 921 阅读 · 19 评论 -
C++和OpenGL实现3D游戏编程【连载7】——文字和汉字的显示
上一节我们讨论了纹理在二维平面内不规则图形贴图的相关基础操作,本节我们开始了解游戏里文字以及汉字的显示方法。本节课我们将从基本的ASCII字符显示,拓展到中文字符的显示,最后再讲到纹理字符的显示,并对各种文字显示方法的优缺点和使用场景进行分析,这节课将使用到显示列表、兼容视图、屏幕图形转纹理等操作。原创 2024-09-01 06:20:24 · 1005 阅读 · 21 评论 -
C++和OpenGL实现3D游戏编程【连载8】——纹理文字实现与优化
上一节课我们介绍了在opengl中文字的显示方法,但显示出来的文字无法旋转,在某些特定游戏要求下,文字是需要进行旋转的,那么这一节课我们介绍一下纹理文字的高级使用方法,将文字生成纹理,达到文字旋转的效果。原创 2024-09-06 15:45:46 · 584 阅读 · 12 评论 -
C++和OpenGL实现3D游戏编程【连载9】——纹理的镂空显示
前面的课程中,我们学会了加载纹理并显示纹理图案,但是纹理的图案都是长方形的图片,图片就会有白色或黑色背景,那么在游戏设计过程中,我们经常不需要显示图片的背景部分,那么这节课我们就来讨论一下如何实现剔除白色或黑色背景后的镂空图像,下图就是将树的图片白色背景去除后显示的效果。原创 2024-09-19 15:46:21 · 205 阅读 · 17 评论 -
C++和OpenGL实现3D游戏编程【连载10】——纹理的半透明显示
上一节课我们讲到了图片的镂空显示,它能在显示图片时去除指定颜色的背景,那么这节课我们来说一下图片的半透明显示效果,半透明效果能给画面带来更高质量的提升,使图片显示的更自然,产生更真实的效果。下面是一个气泡向上漂浮的效果。原创 2024-09-22 19:16:57 · 642 阅读 · 7 评论 -
C++和OpenGL实现3D游戏编程【连载11】——光照效果进阶
其次,对于有纹理的物体表面,我们需要设置纹理和光线的融合效果,简单的理解就是光照和纹理需要进行合成处理,还好再没有Shader(着色器)处理以前, 这部分内容非常的简单,系统提供了一种简单的融合方式,一行代码的就可以搞定,当然这样牺牲了融合的自由度,如果有更深层次的需求,我们将在后期Shader中详细讨论。通过以上设置,我们发现它跟光源里的很多属性是相似的,其实一个物体的环境光,漫反射,镜面反射等效果,不仅仅取决于光源设置,还取决于自身的材质设置,在他们两个的共同影响下,产生了我们眼中物体光照的效果。原创 2024-09-24 08:23:02 · 716 阅读 · 11 评论 -
C++和OpenGL实现3D游戏编程【连载12】——游戏中音效的使用
前面我们实现了图片纹理的显示功能,是不是感觉到非常的简单。那么今天我们就继续说下游戏声音的实现。音效也是游戏的灵魂,只有搭配了美妙动听的音效以后,游戏才能令人耳目一新,与玩家产生良好的效果。原创 2024-10-01 09:01:41 · 576 阅读 · 9 评论 -
C++和OpenGL实现3D游戏编程【连载13】——多重纹理混合详解
OpenGL 的纹理组合器可以控制多重纹理的片段是如何组合的,比如自定义两个纹理的显示权重,给程序员更多自定义融合的选择。纹理组合器提供了一个新的纹理环境 GL_COMBINE允许我们控制每一个纹理单元的纹理片段是如何组合的,达到自定义生成多种不同的纹理组合方式的效果。第一步, 启用文理融合模式第二步,赋值纹理融合函数参数纹理组合器是通过 glTexEnv函数来确定具体的控制方式的。我们需要设置使用哪个纹理组合器的函数。原创 2024-10-03 10:55:32 · 620 阅读 · 8 评论