github有趣项目:自制“我的世界”

video code
https://www.youtube.com/watch?v=4O0_-1NaWnY,https://www.bilibili.com/video/BV1oj411p7qM/? https://github.com/jdah/minecraft-weekend

项目依赖

        在构建主项目之前,必须构建以下 lib/ 静态库:

GLAD lib/glad/src/glad.o
CGLM 高度优化的 C 图形数学 (glm) lib/cglm/.libs/libcglm.a
GLFW 一个开源多平台库,适用于 OpenGL、OpenGL ES 和 桌面上的 Vulkan 开发。它提供了一个简单的API来创建 窗口、上下文和表面,接收输入和事件。GLFW 采用 C 语言编写,支持 Windows、macOS、X11 和 Wayland。 lib/glfw/src/libglfw3.a
libnoise lib/noise/libnoise.a

VAO(Vertex Array Object)和VBO(Vertex Buffer Object)

在图形编程中,特别是使用OpenGL或类似图形API的情况下,VAO(Vertex Array Object)和VBO(Vertex Buffer Object)是用于管理顶点数据的重要概念。

  1. VBO(Vertex Buffer Object)

    • 作用:VBO是用来存储顶点数据的缓冲区对象。顶点数据包括顶点坐标、颜色、法线等信息。
    • 使用场景:通常,一个VBO包含所有的顶点数据,以便能够高效地将它们传递给GPU。
    • 好处:使用VBO能够减少CPU和GPU之间的数据传输次数,提高性能。
  2. VAO(Vertex Array Object)

    • 作用:VAO是用于封装和存储顶点数组状态的对象。它保存了顶点缓冲区对象(VBO)的状态,以及顶点属性指针、顶点索引等。
    • 使用场景:当你有多个VBO时,可以使用VAO将它们组织起来,方便地进行状态切换。
    • 好处:VAO的使用可以帮助你更高效地管理和维护多个顶点数组对象。

简而言之,VBO用于存储实际的顶点数据,而VAO用于存储渲染时需要的状态和指针信息。在OpenGL中,使用它们的一般流程是:

  1. 创建并绑定一个VAO。
  2. 在VAO中启用和配置顶点属性指针,包括启用VBO。
  3. 创建并绑定一个或多个VBO,将顶点数据传递给它们。
  4. 解绑VAO和VBO,以避免意外修改。

这种结构的使用能够有效地减少不必要的状态切换,提高图形渲染的效率。在现代OpenGL中,使用VAO和VBO已经成为标配,尤其是在处理大量顶点数据时。

纹理图集

纹理图集(Texture Atlas)是一种将多个小纹理图合并到一个大纹理中的技术。这种技术的目的是减少图形渲染中的资源开销,提高渲染效率。通常,这个大纹理包含了游戏或应用程序中需要使用的多个小纹理,这些小纹理可以是角色、场景元素、GUI元素等。

以下是纹理图集的一些主要优势和用途:

  1. 减少渲染调用:使用一个大的纹理图集,而不是多个小纹理,可以减少渲染调用的次数。这有助于提高渲染效率,特别是在图形API中存在批处理机制的情况下。

  2. 减少内存占用:合并小纹理到一个图集中可以减少内存的占用,因为每个小纹理都需要一定的内存。这对于移动设备和性能受限的环境尤为重要。

  3. 减少纹理切换:在图集中,所有的纹理都在同一个大纹理中,减少了纹理切换的需求。这对于图形渲染中的状态切换来说是一项优化。

  4. 提高纹理缓存命中率:当纹理数据紧密打包在一起时,有助于提高纹理缓存的命中率,减少纹理读取的性能损失。

使用纹理图集的一般步骤包括:

  1. 创建纹理图集:将所有小纹理合并到一个大纹理中。这可以手动完成,也可以使用专门的工具进行自动打包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值