用 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM