2D游戏引擎制作:图片与文字
图片与文字
前言
基础部分就稍快一点,但是一天一篇笔者也累啊!上一篇除笔者外只有3个浏览记录,好悲伤,如果不是引擎制作而是游戏制作是不是人会多一点。
正文
以下代码接上篇文章。
接下来绘制图片,需要引入新头文件:
#include <Wincodec.h>
在初始化d2d后添加初始化WIC(direct2D中常用WIC来加载图片)的方法:
IWICImagingFactory* wicFactory = NULL;
ID2D1Bitmap* pBitmap = NULL;CoInitialize(NULL);
CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER,IID_PPV_ARGS(&wicFactory));
加载每个图片的方法一样,可以封装到一个方法里:
IWICBitmapDecoder* decoder;
IWICBitmapFrameDecode* source;
IWICFormatConverter* converter;
IWICBitmap* wicBitmap;wicFactory->CreateDecoderFromFilename(bitmapName.c_str(), NULL, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &decoder);decoder->GetFrame(0, &source);
wicFactory->CreateFormatConverter(&converter);
converter->Initialize(source, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, nullptr, 0, WICBitmapPaletteTypeMedianCut);
wicFactory->CreateBitmapFromSource(converter, WICBitmapCacheOnDemand, &wicBitmap);
pRenderTarget->CreateBitmapFromWicBitmap(wicBitmap, &pBitmap);decoder->Release();
decoder = NULL;
source->Release();
source = NULL;
converter->Release();
converter = NULL;
wicBitmap->Release();
wicBitmap = NULL;
绘制图片,在原有绘制矩形函数前加一句:
pRenderTarget->DrawBitmap(pBitmap, D2D1::RectF(100.f, 100.f, 500.f, 500.f));
运行效果。
添加文字,需要引入新头文件:
#include <dwrite.h>
#pragma comment(lib,"dwrite.lib")
初始化方法:
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), (IUnknown**)&writeFactory);
writeFactory->CreateTextFormat(L"宋体", NULL,DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 30, L"chs", &textFormat);
//每需要一种字体需要生成一个textFormat,只生成一个在改属性也可以。
绘制文字,在原有绘制图片函数后加一句:
pRenderTarget->DrawTextW(text.c_str(), text.size(), textFormat, D2D1::RectF(100.f, 100.f, 500.f, 500.f), pBlackBrush);
运行效果。
至此,简单显示部分算完成了,绘制其它图形方法相似,只是更改函数,至于画路径那种的暂时用不到,使用到了再看即可,想学习其它方法的读者可以到上篇文章中Direct2D教程链接中查看。
结束语
多说一句,编写博客的工具Markdown,功能是很强大,但好像直接从word中拷贝文字复制过来会显示不正常,可能是文字中有隐藏的字符吧!
2D游戏引擎制作:图片与文字相关推荐
- 2D游戏引擎制作:前言
前言 这是笔者生平第一次写博客,水平较差,请多谅解. 前言 笔者年少时,包括现在,一直是一个喜欢玩游戏的人.父亲曾因此批评过笔者,因为他也是个程序员,就说你可以自己做一个出来之类的话,可到现在都没有教 ...
- 2D游戏引擎制作:读取XML文件 1
读取XML文件 1 前言 渲染底层部分暂时结束,等用到了再继续写. 之前创建的窗体大小800和600还有标题等信息是写死在代码里的,但笔者们一般需要将它提出来放在一个文件里,以便修改这些属性时不用重新 ...
- sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...
kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...
- Android 2D游戏引擎AndEngine快速入门教程
Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...
- python scratch unity_Unity3D研究院之2D游戏开发制作原理(二十一)
经过了4个月不懈的努力,我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了.这里MOMO先打一下广告,图灵的出版社编辑成员都非常给力,尤其是编辑小花为这本书付出了很大的努力,还有杨海玲老师,不然 ...
- 2D游戏引擎Allegro 系列教程(二) Hello world!
本系列文章由sky编写,转载请注明出处. http://blog.csdn.net/qq573011406/article/details/8172949 作者:袁全伟 邮箱: qq5730114 ...
- Love2D游戏引擎制作贪吃蛇游戏
预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...
- 2d游戏引擎_8年,从2D到3D,我的学习之路
Mickey 写了一篇 <一个本科毕业生创业两年的感悟>,从他的视角,总结了我们合作的两年经历. 我也来写一篇,介绍我的学习之路,希望对大家有所帮助,谢谢大家- 我的学习方法 1.直接从0 ...
- 开发2d游戏要用什么引擎_下一个游戏要使用什么2D游戏引擎
开发2d游戏要用什么引擎 A few weeks ago, I posted about my experience attempting to make a prototype in a bunch ...
最新文章
- 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...
- pytorch_lightning Default process group is not initialized
- LeetCode Largest Divisible Subset(动态规划)
- 关于org.apache.lucene.queryParser.ParseException: Encountered 解决方法
- 一个PHP程序的“怪问题”
- ECSHOP批量添加商品到购物车
- mysql初始化很慢_mysql初始化报错
- 安装 | 最新MATLAB 2020b(64位)安装教程完整版
- 产品读书《极简工作法则》
- sql语句根据身份证号获取年龄
- Tapestry经典入门教程
- Mtk Sensor 驱动框架变更简要分析
- Spring基础-AOP-切入点详解
- PHP延迟静态捆绑Late Static Bindings
- Solr搜索引擎 — 中文全拼简拼分词
- 怎么把照片改成一寸照?教你把照片改成一寸照的方法
- 准备离职了,公司决定加薪留住我,是去是留?
- C++ 主函数几种语法
- STCP与TCP协议
- input组件选择日期时间