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

#include <TextureOpenGL.h>

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

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

int GetOpenGlTexture ()
 
 ~TextureOpenGL ()
 
- Открытые члены унаследованные от 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 SetOpenGlTexture (int ogl_texture)
 
 TextureOpenGL (bool lazy_initialization=true)
 
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)
 

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

int ogl_texture
 
- Защищенные данные унаследованные от 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 RenderOpenGL
 

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

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

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

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

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

◆ ~TextureOpenGL()

TextureOpenGL::~TextureOpenGL ( )

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

76  {
77  if (this->ogl_texture != -1) render->DeleteTexture(this);
78 }

Перекрестные ссылки ogl_texture и render.

◆ TextureOpenGL()

TextureOpenGL::TextureOpenGL ( bool  lazy_initialization = true)
inlineexplicitprotected

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

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

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

Методы

◆ GetOpenGlTexture()

int TextureOpenGL::GetOpenGlTexture ( )

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

46  {
47  if (!this->initialized) {
48  this->LoadImageData();
49  }
50 
51  if (this->ogl_texture < 0) {
52  __debugbreak(); // prob not loaded in as texture and recast so problems
53  }
54 
55  return this->ogl_texture;
56 }

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

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

◆ Create() [1/2]

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

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

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

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

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

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

◆ Create() [2/2]

Texture * TextureOpenGL::Create ( ImageLoader loader)
staticprotected

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

37  {
38  auto tex = new TextureOpenGL();
39  if (tex) {
40  tex->loader = loader;
41  }
42 
43  return tex;
44 }

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

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

◆ SetOpenGlTexture()

void TextureOpenGL::SetOpenGlTexture ( int  ogl_texture)
inlineprotected

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

17 { this->ogl_texture = ogl_texture; }

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

◆ LoadImageData()

bool TextureOpenGL::LoadImageData ( )
protectedvirtual

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

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

58  {
59  if (!this->initialized) {
60  void *pixels;
61 
62  this->initialized =
63  this->loader->Load(&width, &height, &pixels, &native_format);
64  if (this->initialized && this->native_format != IMAGE_INVALID_FORMAT) {
65  this->pixels[native_format] = pixels;
66  this->initialized = render->MoveTextureToDevice(this);
67  if (!this->initialized) {
68  __debugbreak();
69  }
70  }
71  }
72 
73  return this->initialized;
74 }

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

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

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

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

◆ RenderOpenGL

friend class RenderOpenGL
friend

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

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

◆ ogl_texture

int TextureOpenGL::ogl_texture
protected

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

Используется в GetOpenGlTexture(), SetOpenGlTexture() и ~TextureOpenGL().


Объявления и описания членов классов находятся в файлах:
TextureOpenGL::ogl_texture
int ogl_texture
Definition: TextureOpenGL.h:22
TextureOpenGL::LoadImageData
virtual bool LoadImageData()
Definition: TextureOpenGL.cpp:58
Image::native_format
IMAGE_FORMAT native_format
Definition: Image.h:51
Image::width
unsigned int width
Definition: Image.h:49
TextureOpenGL::TextureOpenGL
TextureOpenGL(bool lazy_initialization=true)
Definition: TextureOpenGL.h:19
Image::loader
ImageLoader * loader
Definition: Image.h:47
height
EGLSurface EGLint EGLint EGLint EGLint height
Definition: SDL_egl.h:1596
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
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