Text


Text

As there is not support for text in DirectX, here are some options that can be used to draw text
  1. Use Direct2D to draw in the screen
  2. Use Direct2D to create a texture with an image including a set of common characters
  3. Use GDI to create a texture with an image including a set of common characters
The figure below shows a common image that can be used to draw text in DirectX or OpenGL.
Como no hay soporte para texto en DirectX, aquí están algunas opciones que pueden usarse para dibujar texto
  1. Usar Direct2D para dibujar en la pantalla
  2. Usar Direct2D para crear una textura con una imagen con un conjunto de las letras más comunes
  3. Usar GDI para crear una textura con una imagen con un conjunto de las letras más comunes
La figura de abajo muestra una imagen común que puede usarse para dibujar texto en DirectX o OpenGl.

FontTexture

Problem 1
Create a DirectX application called ClockX to draw text in DirectX. After creating the application, edit the ClockX.h file to create a Font and a Label as shown. Then, edit the ClockX.cpp file to create and render, the Font and the Label.
Cree una aplicación de DirectX llamada ClockX para dibujar texto en DirectX. Después de crear la aplicación, edite el archivo ClockX.h para crear un Font y una Label cómo se muestra. Entonces, edite el archivo ClockX.cpp para crear y dibujar, la Font y la Label.

ClockX.h
#pragma once //______________________________________ ClockX.h
#include "Resource.h"

class ClockX: public . . .
{
public:
     . . .
     //____________________________________________________ 1. Application
     DX11::Font font;
     DX11::Label label;
     . . .
};


ClockX.cpp
...
void ClockX::Window_Open(Win::Event& e)
{
     . . .
     //________________________________________________________________ 5. Create font
     error = font.Create(device, deviceContext, L"Arial", 64, RGB(0, 0, 0), RGB(0, 255, 0));
     if (error != NULL) this->MessageBox(error, L"ClockX", MB_OK | MB_ICONERROR);
     //________________________________________________________________ 6. Create Label
     if (label.Create(hWnd, device, 64) == false) return this->Destroy();
}

void ClockX::RenderScene()
{
     //________________________________________________ 1. Clear screen and camera update
     Clear(0.0f, 0.0f, 0.0f, 1.0f);
     camera.Update();
     //________________________________________________ 2. Application objects
     ZBuffer(false);
     Sys::Time time;
     wchar_t text[64];
     _snwprintf_s(text, 64, _TRUNCATE, L"%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
     label.Set(deviceContext, font, 0.0f, 0.0f, modeDesc.Width, modeDesc.Height, text);
     label.Render(deviceContext);
     textuShader.RenderOrthographic(deviceContext, label.GetIndexCount(), camera, font.textureView);
     ZBuffer(true);
}


ClockXRun1

ClockXRun2

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home