Opengl复习笔记(三)—— 粒子效果和文字【内含代码】

这篇博客主要介绍了OpenGL中的粒子效果和文字显示。对于文字显示,讲解了从字符加载、纹理生成到内存释放的流程,并提供了相关的代码示例。在粒子效果部分,以火焰为例,阐述了粒子系统的原理和实现,包括粒子的分布、速度、寿命和大小变化,同时推荐了一个GitHub项目作为参考。
摘要由CSDN通过智能技术生成

前面记录了一下基础知识,接下来就写一下酷炫的效果。
当然我也是刚入门,只学了粒子效果和文字显示…

基础效果入门

文字显示

主要是要回答几个问题:

  1. 文字是怎么表示的
  2. 文字怎么加载的
  3. 如何实现

关于怎么表示问题,可以看下图,我们可以加载一个字符字形,获取它的度量值,并生成一个纹理。
在这里插入图片描述
具体的流程如下:

  1. 初始化FT_Library,FT_face
  2. 初始化加载的画笔大小
  3. 对128个字符进行循环(循环过程包含Load字符,生成texture,设置texture的一些基础选项,保存加载的每一个字符数据)
  4. 最后要释放内存(重要!!!!)

具体代码代码:

   // FreeType
    FT_Library ft;
    // All functions return a value different than 0 whenever an error occurred
    if (FT_Init_FreeType(&ft))
        std::cout << "ERROR::FREETYPE: Could not init FreeType Library" << std::endl;

    // Load font as face
    FT_Face face;
    if (FT_New_Face(ft, "fonts/arial.ttf", 0, &face))
        std::cout << "ERROR::FREETYPE: Failed to load font" << std::endl;

    // Set size to load glyphs as
    FT_Set_Pixel_Sizes(face, 0, 48);

    // Disable byte-alignment restriction
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 

    // Load first 128 characters of ASCII set
    for (GLubyte c = 0; c < 128; c++)
    {
   
        // Load character glyph 
        if (FT_Load_Char(face, c, FT_LOAD_RENDER))
        {
   
            std::cout << "ERROR::FREETYTPE: Failed to load Glyph" << std::endl;
            continue;
        }
        // Generate texture
        GLuint texture;
        glGenTextures(1, &texture)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值