World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс TextureD3D

#include <TextureD3D.h>

+ Граф наследования:TextureD3D:
+ Граф связей класса TextureD3D:

Открытые члены

IDirectDrawSurface * GetDirectDrawSurface ()
 
IDirect3DTexture2 * GetDirect3DTexture ()
 
- Открытые члены унаследованные от Image
 Image (bool lazy_initialization=true)
 
virtual ~Image ()
 
unsigned int GetWidth ()
 
unsigned int GetHeight ()
 
const voidGetPixels (IMAGE_FORMAT format)
 
IMAGE_FORMAT GetFormat () const
 
bool Release ()
 

Защищенные члены

void SetDirectDrawSurface (IDirectDrawSurface *dds)
 
void SetDirect3DTexture2 (IDirect3DTexture2 *d3dt)
 
 TextureD3D (bool lazy_initialization=true)
 
 ~TextureD3D ()
 
virtual bool LoadImageData ()
 
- Защищенные члены унаследованные от Texture
 Texture (bool lazy_initialization=true)
 

Защищенные статические члены

static TextureCreate (unsigned int width, unsigned int height, IMAGE_FORMAT format, const void *pixels)
 
static TextureCreate (ImageLoader *loader)
 

Защищенные данные

IDirectDrawSurface * dds
 
IDirect3DTexture2 * d3dt
 
- Защищенные данные унаследованные от Image
bool lazy_initialization = 0
 
bool initialized = 0
 
ImageLoaderloader = NULL
 
unsigned int width = 0
 
unsigned int height = 0
 
IMAGE_FORMAT native_format = IMAGE_INVALID_FORMAT
 
voidpixels [IMAGE_NUM_FORMATS]
 

Друзья

class Render
 

Дополнительные унаследованные члены

- Открытые статические члены унаследованные от Image
static ImageCreate (unsigned int width, unsigned int height, IMAGE_FORMAT format, const void *pixels=nullptr)
 
static ImageCreate (ImageLoader *loader)
 

Подробное описание

См. определение в файле TextureD3D.h строка 6

Конструктор(ы)

◆ TextureD3D()

TextureD3D::TextureD3D ( bool  lazy_initialization = true)
inlineexplicitprotected

См. определение в файле TextureD3D.h строка 21

22  : Texture(lazy_initialization), dds(nullptr), d3dt(nullptr) {}

Используется в Create().

+ Граф вызова функции:

◆ ~TextureD3D()

TextureD3D::~TextureD3D ( )
protected

См. определение в файле TextureD3D.cpp строка 87

87  {
88  render->RemoveTextureFromDevice(this);
89  this->d3dt = NULL;
90  this->dds = NULL;
91 }

Перекрестные ссылки d3dt, dds и render.

Методы

◆ GetDirectDrawSurface()

IDirectDrawSurface * TextureD3D::GetDirectDrawSurface ( )

См. определение в файле TextureD3D.cpp строка 49

49  {
50  if (!this->initialized) {
51  this->LoadImageData();
52  }
53 
54  return this->dds;
55 }

Перекрестные ссылки dds, Image::initialized и LoadImageData().

+ Граф вызовов:

◆ GetDirect3DTexture()

IDirect3DTexture2 * TextureD3D::GetDirect3DTexture ( )

См. определение в файле TextureD3D.cpp строка 57

57  {
58  if (!this->initialized) {
59  this->LoadImageData();
60  }
61 
62  return this->d3dt;
63 }

Перекрестные ссылки d3dt, Image::initialized и LoadImageData().

Используется в Render::DrawProjectile().

+ Граф вызовов:
+ Граф вызова функции:

◆ Create() [1/2]

Texture * TextureD3D::Create ( unsigned int  width,
unsigned int  height,
IMAGE_FORMAT  format,
const void pixels = nullptr 
)
staticprotected

См. определение в файле TextureD3D.cpp строка 6

7  {
8 
9  if (width == 0 || height == 0) __debugbreak();
10 
11  auto tex = new TextureD3D();
12  if (tex) {
13  tex->initialized = true;
14  tex->width = width;
15  tex->height = height;
16  tex->native_format = format;
17  unsigned int num_pixels = tex->GetWidth() * tex->GetHeight();
18  unsigned int num_pixels_bytes =
19  num_pixels * IMAGE_FORMAT_BytesPerPixel(format);
20  tex->pixels[format] = new unsigned char[num_pixels_bytes];
21  if (pixels) {
22  memcpy(tex->pixels[format], pixels, num_pixels_bytes);
23  } else {
24  memset(tex->pixels[format], 0, num_pixels_bytes);
25  }
26 
27  if (tex->initialized && tex->native_format != IMAGE_INVALID_FORMAT) {
28  // tex->pixels[format] = pixels;
29  // tex->initialized = render->MoveTextureToDevice(tex); nope
30  if (!tex->initialized) {
32  }
33  }
34  }
35 
36  return tex;
37 }

Перекрестные ссылки __debugbreak(), Image::height, IMAGE_FORMAT_BytesPerPixel(), IMAGE_INVALID_FORMAT, TextureD3D() и Image::width.

Используется в Render::CreateSprite(), Render::CreateTexture(), Render::CreateTexture_Alpha(), Render::CreateTexture_Blank(), Render::CreateTexture_ColorKey(), Render::CreateTexture_PCXFromFile(), Render::CreateTexture_PCXFromIconsLOD(), Render::CreateTexture_PCXFromNewLOD() и Render::CreateTexture_Solid().

+ Граф вызовов:
+ Граф вызова функции:

◆ Create() [2/2]

Texture * TextureD3D::Create ( ImageLoader loader)
staticprotected

См. определение в файле TextureD3D.cpp строка 40

40  {
41  auto tex = new TextureD3D();
42  if (tex) {
43  tex->loader = loader;
44  }
45 
46  return tex;
47 }

Перекрестные ссылки Image::loader и TextureD3D().

+ Граф вызовов:

◆ SetDirectDrawSurface()

void TextureD3D::SetDirectDrawSurface ( IDirectDrawSurface *  dds)
inlineprotected

См. определение в файле TextureD3D.h строка 18

18 { this->dds = dds; }

Перекрестные ссылки dds.

◆ SetDirect3DTexture2()

void TextureD3D::SetDirect3DTexture2 ( IDirect3DTexture2 *  d3dt)
inlineprotected

См. определение в файле TextureD3D.h строка 19

19 { this->d3dt = d3dt; }

Перекрестные ссылки d3dt.

◆ LoadImageData()

bool TextureD3D::LoadImageData ( )
protectedvirtual

Переопределяет метод предка Image.

См. определение в файле TextureD3D.cpp строка 65

65  {
66  if (!this->initialized) {
67  void *pixels;
68 
69  this->initialized =
70  this->loader->Load(&width, &height, &pixels, &native_format);
71 
72  if (width == 0 || height == 0) __debugbreak();
73 
74  if (this->initialized && this->native_format != IMAGE_INVALID_FORMAT) {
75  this->pixels[native_format] = pixels;
76 
77  // check power of two - temporary
78  if ( (this->width & (this->width - 1)) == 0 && (this->height & (this->height - 1)) == 0 ) {
79  this->initialized = render->MoveTextureToDevice(this);
80  }
81  }
82  }
83 
84  return this->initialized;
85 }

Перекрестные ссылки __debugbreak(), IMAGE_INVALID_FORMAT, Image::initialized, ImageLoader::Load(), Image::loader, Image::native_format, Image::pixels и render.

Используется в GetDirect3DTexture() и GetDirectDrawSurface().

+ Граф вызовов:
+ Граф вызова функции:

Документация по друзьям класса и функциям, относящимся к классу

◆ Render

friend class Render
friend

См. определение в файле TextureD3D.h строка 12

Данные класса

◆ dds

IDirectDrawSurface* TextureD3D::dds
protected

См. определение в файле TextureD3D.h строка 24

Используется в GetDirectDrawSurface(), SetDirectDrawSurface() и ~TextureD3D().

◆ d3dt

IDirect3DTexture2* TextureD3D::d3dt
protected

См. определение в файле TextureD3D.h строка 25

Используется в GetDirect3DTexture(), SetDirect3DTexture2() и ~TextureD3D().


Объявления и описания членов классов находятся в файлах:
Image::native_format
IMAGE_FORMAT native_format
Definition: Image.h:51
Image::width
unsigned int width
Definition: Image.h:49
Image::loader
ImageLoader * loader
Definition: Image.h:47
height
EGLSurface EGLint EGLint EGLint EGLint height
Definition: SDL_egl.h:1596
TextureD3D::TextureD3D
TextureD3D(bool lazy_initialization=true)
Definition: TextureD3D.h:21
TextureD3D::dds
IDirectDrawSurface * dds
Definition: TextureD3D.h:24
IMAGE_FORMAT_BytesPerPixel
unsigned int IMAGE_FORMAT_BytesPerPixel(IMAGE_FORMAT format)
Definition: Image.cpp:46
IMAGE_INVALID_FORMAT
@ IMAGE_INVALID_FORMAT
Definition: Image.h:12
format
SDL_AudioFormat format
Definition: SDL_audio.h:194
Image::lazy_initialization
bool lazy_initialization
Definition: Image.h:45
width
EGLSurface EGLint EGLint EGLint width
Definition: SDL_egl.h:1596
Image::height
unsigned int height
Definition: Image.h:50
Texture::Texture
Texture(bool lazy_initialization=true)
Definition: Texture.h:6
TextureD3D::d3dt
IDirect3DTexture2 * d3dt
Definition: TextureD3D.h:25
TextureD3D::LoadImageData
virtual bool LoadImageData()
Definition: TextureD3D.cpp:65
Image::initialized
bool initialized
Definition: Image.h:46
ImageLoader::Load
virtual bool Load(unsigned int *width, unsigned int *height, void **pixels, IMAGE_FORMAT *format)=0
__debugbreak
void __cdecl __debugbreak(void)
Image::pixels
void * pixels[IMAGE_NUM_FORMATS]
Definition: Image.h:52
pixels
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: SDL_opengl.h:1572
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52