DirectXTK의 Make Sprite Font 문제 및 해결 방법

DirectXTK의 Make Sprite Font 문제 및 해결 방법
개시하다
DirectX11에서 DirectX9까지 D3DX 라이브러리는 표준으로 제공되지 않습니다.이 때문에 편리한 학급은 사용할 수 없다.Font 표현도 마찬가지로 사용할 수 없습니다.대체적으로 D3DX 라이브러리의 DX11 버전이 존재하지만 라이브러리를 단독으로 설치하고 사용해야 한다(참고: DirectX 보조 라이브러리-위키백과).
단독으로Font 디스플레이 처리를 실현할 수 있지만 이러한 일반적인 처리가 무료 소프트웨어로 존재하기를 바란다.이곳에는'DirectX Tool Kit = DirectXTK'가 등장한다.
DirectXTK란 무엇입니까?
DirectXTK는 C++로 제작되었습니다.Febrary242012가 처음 출시되었습니다.DirectXTK가 제공하는 기능은 Oct102018에서 아래와 같다(참조: DirectXTK.
머리글 이름
컨텐트
Audio.h
XAudio2의 저급 오디오 API 사용(Audio 공용 헤더용 DirectXTK)
CommonStates.h
일반적으로 사용되는 D3D 상태 객체의 플랜트 제공
DDSTextureLoader.h
가벼운 DDS 파일 텍스쳐 로더
DirectXHelpers.h
3D 프로그래밍을 위한 다양한 C++ 지원
Effects.h
일반 렌더링 작업에 내장된 섀도우 설정
GamePad.h
XInput을 사용하는 게임 패드 컨트롤러 도우미
GeometricPrimitive.h
입방체나 구체와 같은 기본 모양을 그립니다.
GraphicsMemory.h
동적 그래픽 스토리지 할당 관리 도우미
Keyboard.h
키보드 상태 추적 지원
Model.h
.CMO、.SDKMESH 또는.VBO 파일에서 읽은 메쉬 그리기
Mouse.h
마우스 도우미
PostProcess.h
일반 프로세싱을 위한 내장형 섀도우 세트
PrimitiveBatch.h
단순하고 효율적으로 사용자의 기본을 그리는 방법
ScreenGrab.h
가벼운 화면 캡처 보호기
SimpleMath.h
DirectXMath의 단순화된 C++ 래치
SpriteBatch.h
단순하고 효율적인 2D 스플라인 렌더링
SpriteFont.h
비트맵 기반 텍스트 렌더링
VertexTypes.h
일반적으로 사용되는 정점 데이터 형식의 구조
WICTextureLoader.h
WIC 기반 이미지 파일 텍스쳐 로더
XboxDDSTextureLoader.h
Xbox One의 DDSTExtureLoader 전용 응용 프로그램
이번엔 폰트를 그리고 싶어서 스프릿폰트를 그리고 싶어요.h의 SpriteFont 클래스를 사용합니다.이 SpriteFont 클래스는 미리 "spritefont 데이터"를 만들어야 합니다.이 데이터는 무늬 무늬 정보와 글씨체 그리기에 필요한 정보를 포함한다.이 데이터를 만든 것은 DirectXTK에 포함된 "MakeSprite Font.exe"입니다.다음은 그 폴더 구조입니다.

Make Sprite Font 폴더의 Make SpritFont입니다.있다

Make Sprite Font의 문제점
MakeSpriteFont.exe는 '사용할 글꼴의 문자를 잘라내고 문양 파일과 부속 정보를 생성하여'spritefont 데이터' 를 만드는 도구입니다.문자 수가 많으면 변환하는 데 시간이 걸립니다.게다가 그 알고리즘에 문제가 있어 1픽셀 단위로 무늬 이미지의 공백을 찾는 것 같다.한자는 2만 자 정도 되기 때문에 바꾸는 데 시간이 오래 걸린다.그나저나 내 환경에서 12시간이 지나도 끝나지 않았다(Intel Core 2 Quad 2.85GHz).
Make Sprite Font의 해결 방법
이미 이 문제에 대한 해결 방안을 제시하고 기사를 썼다.제로그램DirectXTK로 글꼴 표시 및 일본어 지원(2013/4/29)입니다.글의 날짜는 2013/4/29이기 때문에 매우 낡았다.우리는 여기에 쓴 내용이 현재 (Oct102018)에도 통용되는지 검증했다.
결과적으로 순조롭게 진행되고 있다.덕분에'spritefont 데이터'의 제작은 약 1분 만에 끝났다.대폭적인 시간 개선.
다음은 그 절차를 기술한다.

  • ZeroGram의 샘플 프로그램 Make Sprite FontModify입니다.zip을 다운로드합니다.
  • zip을 펼치면 modify 폴더에 두 개의 파일(GlyphPacker.cs, TrueTypeImporter.cs)이 있습니다.
  • TrueTypeImporter는 DirectXTK/Make Sprite Font 폴더에 있습니다.cs를 복사합니다.DirectXTK/Make Sprite Font 폴더의 GlyphPacker 입니다.텍스트 편집기에서 cs를 엽니다.

  • ZeroGram의 GlyphPacker.cs의 Arrange Glyphs 함수를 찾아서 함수와 함께 복사합니다.Make Sprite Font 폴더 GlyphPackercs의 Arrange Glyphs 함수로 바꿉니다.

  • ZeroGram의 GlyphPacker.cs에서 PositionGlyph 함수를 찾아 함수와 함께 복사합니다.Make Sprite Font 폴더 GlyphPackercs의 Arrange Glyphs 함수 뒤에 붙여넣기를 클릭합니다.
  • DirectXTK/Make Sprite Font 폴더의 Make Sprite Font입니다.Visual Studio 2015에서 csproj를 열고 구성합니다.Make Sprite Font의 해결 방법 결과
    다음 명령을 실행하면 약 2만5천개의 한자가 변환된다.소요 시간은 약 1분이다.전환 시간이 원시 시간보다 짧고 데이터도 문제없이 전환되었다.실제로 나타난 곳은 문제없이 드러났다.
    MakeSpriteFont.exe "MS ゴシック" myfile.spritefont /FontSize:12 /CharacterRegion:32-126 /CharacterRegion:0x3000-0x30ff /CharacterRegion:0xff00-0xffef /CharacterRegion:0x4e00-0x9fff  /CharacterRegion:0x2000-0x2fff
    
    MakeSpriteFont.exe에 제공되는 Character Region 옵션의 의미는 다음과 같습니다.
    설명
    옵션
    아스키 문자
    /CharacterRegion:32-126
    가짜 명함
    /CharacterRegion:0x3000-0x30ff
    기호
    /CharacterRegion:0xff01-0xffe5
    전각 한자
    /CharacterRegion:0x4e00-0x9fff
    전각 특수 기호
    /CharacterRegion:0x2000-0x2fff
    [명령 프롬프트에서 수행한 결과]는 다음과 같습니다.

    [DirectX11에서 Sprite Font 클래스를 사용하여 표시된 결과]는 다음과 같습니다.

    총결산
    ZeroGram의 웹사이트에서 해법으로 문제를 해결했습니다.그러나 대체 객체의 두 파일을 완전히 복사할 수는 없으며 파일의 일부를 직접 편집해야 합니다.GiitHub에 공개된 Make Sprite Font.exe가 자주 업데이트되기 때문에 2018년이 되면 이번과 같은 대응이 필요하다.
    고맙습니다, ZeroGram씨.

    좋은 웹페이지 즐겨찾기