zoukankan      html  css  js  c++  java
  • 用 SDL2 在屏幕上打印文本

    打印完图片,是时候打印文字了。这里引用了SDL的字体扩展库,SDL2_ttf.lib,需要包含相应的头文件。

    环境:SDL2 + VC++2015

    下面的代码将在窗口打印一段文字,并对相应的操作做出响应。

    这次把错误处理给精简掉了,代码看起来更清爽。

     1 #include <iostream>
     2 #include "SDL.h"
     3 #include "SDL_ttf.h"
     4 
     5 int main(int argc, char** argv)
     6 {
     7     //屏幕宽度
     8     const int SCREEN_WIDTH = 680;
     9     const int SCREEN_HEIGHT = 400;
    10     //初始化SDL
    11     SDL_Init(SDL_INIT_EVERYTHING);
    12     //初始化字体库
    13     TTF_Init();
    14     //创建窗口
    15     SDL_Window *window = SDL_CreateWindow("Font Test",
    16         SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
    17         SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    18     //创建渲染器
    19     SDL_Renderer *renderer = SDL_CreateRenderer(window, -1,
    20         SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    21 
    22     //打开字体
    23     TTF_Font *font = TTF_OpenFont("XHei.TTC", 30);
    24     //文本转表面
    25     SDL_Color color = { 255, 255, 255 };
    26     SDL_Surface *surf = TTF_RenderText_Blended(font, "Cool, Cooler, Coolest!", color);
    27     //表面转纹理
    28     SDL_Texture *text = SDL_CreateTextureFromSurface(renderer, surf);
    29     //释放资源
    30     SDL_FreeSurface(surf);
    31     TTF_CloseFont(font);
    32 
    33     bool quit = false;
    34     SDL_Event e;
    35     //主循环
    36     while (!quit)
    37     {
    38         //事件栈轮询
    39         while (SDL_PollEvent(&e))
    40         {
    41             //按右上角的X或点鼠标退出
    42             if (e.type == SDL_QUIT || e.type == SDL_MOUSEBUTTONDOWN) quit = true;
    43             //清空渲染器
    44             SDL_RenderClear(renderer);
    45             //渲染字体
    46             SDL_RenderCopy(renderer, text, NULL, NULL);
    47             //呈现渲染器
    48             SDL_RenderPresent(renderer);
    49         }
    50     }
    51 
    52     //释放资源
    53     SDL_DestroyTexture(text);
    54     SDL_DestroyRenderer(renderer);
    55     SDL_DestroyWindow(window);
    56 
    57     SDL_Quit();
    58 
    59     return 0;
    60 }
  • 相关阅读:
    iOS中的隐式动画
    CALayer 为什么选择 cg 开头 而 不选择 UI 开头
    webStorm中的混乱代码格式化
    html5中的常用的库
    地下城勇士外挂
    开发板的时间设置有效,但重启恢复
    8148
    监控行人检测 .
    Linux设备驱动程序学习之分配内存
    快熟傅里叶算法图之音频wav文件
  • 原文地址:https://www.cnblogs.com/joxon/p/5565506.html
Copyright © 2011-2022 走看看