- 博客(10)
- 收藏
- 关注
原创 在OpenGL中创建一个着色器程序(Shader Program)
在维基百科中,shader是这样定义的“计算机图形学领域中,着色器(shader)是一种计算机程序,原本用于进行图像的浓淡处理(计算图像中的光照、亮度、颜色等)”。Shader是一种计算机程序,只不过是在GPU上运行的程序,因此它像其他编程语言一样也需要写入源代码,编译,链接,最终变成可执行程序。所以如果我们想在OpenGL中完成写一个着色器程序,就需要调用OpenGL的API来完成上述步骤:创建着色器对象,输入源码,编译(Compile)着色器对象,把着色器对象添加至着色器程序中,链接(Link)着色
2022-03-04 17:50:20
1682
原创 OpenGL中设置顶点属性(Vertex Attribute)
我们首先明确一点,顶点(Vertex)不单单指位置,它还包含纹理位置,法线等属性。顶点的位置坐标仅仅是顶点的一个属性。在中OpenGL中的顶点缓冲区(Vertex Buffer)我们已经探究了如何利用顶点缓冲区向GPU传递数据用来绘制图形,但GPU并不知道这些数据代表什么,如何利用这些数据。它只知道这些是数据,因此我们需要设置顶点属性,告诉GPU “嗨,这一部分数据代表顶点的位置信息,那一块数据是纹理坐标...”。而OpenGL给我们提供了具有这样功能的API——glVertexAttribPointe
2022-02-25 21:59:04
2271
原创 OpenGL中的顶点缓冲区(Vertex Buffer)
Vertex buffer即顶点缓冲区。从字面意思来看,这个词就是指储存是顶点数据的缓冲区,本质还是一个缓冲区(buffer),是占一定字节的内存。就像在C++中我们用声明并赋值一个int类型,在内存中开辟4个字节空间来储存数据,这是在CPU上进行的。而Vertex buffer是OpenGL在GPU中开辟空间储存数据。当我们运行程序绘制图形时,显卡会从缓存(buffer)中读取顶点数据,进行绘制。今天我们来看一下如何用OpenGL来创建顶点缓存区(vertex buffer)。我个人感觉这个过程和编程
2022-02-23 20:34:48
3978
1
原创 游戏开发设计模式(三):事件总线(Event Bus)
事件总线(Event Bus)作为中心枢纽管理着一系列可以订阅或发布的事件。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。在计算机术语中,总线指计算机各种组件之间传送信息的公共通信干线。在事件总线模式中,这些组件就是时间的发布者(Publisher)和监听者(Listener)。因此,事件总线是一种使用发布-订阅模式(publish-subscribe)通过事件连接对象的方法。事件总线(Even Bu...
2022-01-25 21:43:00
3974
原创 游戏开发设计模式(二):状态模式(State Pattern)
在游戏中,游戏物体经常会因为玩家输入或者事件从一种状态转变为另一种状态,从而使其行为也发生变化。对于以上情况最简单的办法就是使用if-else或者switch-case语句,但这样做不利于程序的拓展和维护。通过状态模式(State Pattern)可以很好的解决这个问题。在状态模式(State Pattern)中,物体的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。我们使用状态模式来实现一个根据其内部状态改变而改变行为的系统。因此游戏环境...
2022-01-18 15:24:47
2591
原创 游戏开发设计模式(一):单例模式
单例模式,正如它的名字一样,它的目标是确保自身的单一性,即在游戏运行时,始终只存在该类的一个实例。一旦出现第二个实例,则需要被立即摧毁。单例模式的优点:可以全局访问。用单例模式创建的资源可以被全局访问。 控制并发:该模式可用于限制对共享资源的并发访问。单例模式的缺点:难以进行单元测试。单例模式通常作为管理类来管理游戏中的其他组件,过度使用,会使各个管理类之间相互依赖,使得难以对某一模块进行单独测试。 会导致懒惰和不好的编程习惯。由于单例模式可以轻松的在任何地方访问所有内容,它提供的简单性可
2022-01-09 18:14:27
3535
原创 在vs2019中读取和写入QString字符串出现中文乱码的问题的解决方案
记录下在做小学期项目时遇到问题的解决方案。我的开发环境是vs2019+MYSQL+QT。这次遇到的问题是这样的:在向MYSQL中读取和写入数据时,无论含不含中文,都不会有乱码,但是向QT中写入和读取字符串时含中文会出现问题。在网络上找了一些解决方案,没有成功,研究了一天,解决了这个问题。首先是写入的问题。一般存在于向控件中(Label,pushbutton)写入内容。设置pushbutton点击事件,点击时设置按钮文字为“啦啦啦”点击按钮,按...
2021-12-24 16:19:15
2768
原创 LearnOpenGL-入门-Hello, Window
参考学习:https://learnopengl-cn.github.io/01%20Getting%20started/03%20Hello%20Window/OpenGL入门:目标:创建一个窗口,按下按键可以改变颜色,退出窗口流程:首先调用glfwInit()函数初始化GLFW。初始化完成后使用glfwWindowHint()为接下来要创建的窗口设置好属性(hint为暗示的意思),这些属性将在设置后保持不变。(这一步实际上是对glfwCrea
2021-09-17 19:13:37
181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人