mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 06:39:18 +02:00
x64
This commit is contained in:
76
Texture.cpp
76
Texture.cpp
@@ -25,6 +25,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "logs.h"
|
||||
#include "Usefull.h"
|
||||
#include "TextureDDS.h"
|
||||
#include "sn_utils.h"
|
||||
|
||||
texture_manager TextureManager;
|
||||
|
||||
@@ -124,6 +125,70 @@ opengl_texture::load_BMP() {
|
||||
return;
|
||||
}
|
||||
|
||||
DDCOLORKEY opengl_texture::deserialize_ddck(std::istream &s)
|
||||
{
|
||||
DDCOLORKEY ddck;
|
||||
|
||||
ddck.dwColorSpaceLowValue = sn_utils::ld_uint32(s);
|
||||
ddck.dwColorSpaceHighValue = sn_utils::ld_uint32(s);
|
||||
|
||||
return ddck;
|
||||
}
|
||||
|
||||
DDPIXELFORMAT opengl_texture::deserialize_ddpf(std::istream &s)
|
||||
{
|
||||
DDPIXELFORMAT ddpf;
|
||||
|
||||
ddpf.dwSize = sn_utils::ld_uint32(s);
|
||||
ddpf.dwFlags = sn_utils::ld_uint32(s);
|
||||
ddpf.dwFourCC = sn_utils::ld_uint32(s);
|
||||
ddpf.dwRGBBitCount = sn_utils::ld_uint32(s);
|
||||
ddpf.dwRBitMask = sn_utils::ld_uint32(s);
|
||||
ddpf.dwGBitMask = sn_utils::ld_uint32(s);
|
||||
ddpf.dwBBitMask = sn_utils::ld_uint32(s);
|
||||
ddpf.dwRGBAlphaBitMask = sn_utils::ld_uint32(s);
|
||||
|
||||
return ddpf;
|
||||
}
|
||||
|
||||
DDSCAPS2 opengl_texture::deserialize_ddscaps(std::istream &s)
|
||||
{
|
||||
DDSCAPS2 ddsc;
|
||||
|
||||
ddsc.dwCaps = sn_utils::ld_uint32(s);
|
||||
ddsc.dwCaps2 = sn_utils::ld_uint32(s);
|
||||
ddsc.dwCaps3 = sn_utils::ld_uint32(s);
|
||||
ddsc.dwCaps4 = sn_utils::ld_uint32(s);
|
||||
|
||||
return ddsc;
|
||||
}
|
||||
|
||||
DDSURFACEDESC2 opengl_texture::deserialize_ddsd(std::istream &s)
|
||||
{
|
||||
DDSURFACEDESC2 ddsd;
|
||||
|
||||
ddsd.dwSize = sn_utils::ld_uint32(s);
|
||||
ddsd.dwFlags = sn_utils::ld_uint32(s);
|
||||
ddsd.dwHeight = sn_utils::ld_uint32(s);
|
||||
ddsd.dwWidth = sn_utils::ld_uint32(s);
|
||||
ddsd.lPitch = sn_utils::ld_uint32(s);
|
||||
ddsd.dwBackBufferCount = sn_utils::ld_uint32(s);
|
||||
ddsd.dwMipMapCount = sn_utils::ld_uint32(s);
|
||||
ddsd.dwAlphaBitDepth = sn_utils::ld_uint32(s);
|
||||
ddsd.dwReserved = sn_utils::ld_uint32(s);
|
||||
sn_utils::ld_uint32(s);
|
||||
ddsd.lpSurface = nullptr;
|
||||
ddsd.ddckCKDestOverlay = deserialize_ddck(s);
|
||||
ddsd.ddckCKDestBlt = deserialize_ddck(s);
|
||||
ddsd.ddckCKSrcOverlay = deserialize_ddck(s);
|
||||
ddsd.ddckCKSrcBlt = deserialize_ddck(s);
|
||||
ddsd.ddpfPixelFormat = deserialize_ddpf(s);
|
||||
ddsd.ddsCaps = deserialize_ddscaps(s);
|
||||
ddsd.dwTextureStage = sn_utils::ld_uint32(s);
|
||||
|
||||
return ddsd;
|
||||
}
|
||||
|
||||
void
|
||||
opengl_texture::load_DDS() {
|
||||
|
||||
@@ -142,9 +207,8 @@ opengl_texture::load_DDS() {
|
||||
return;
|
||||
}
|
||||
|
||||
DDSURFACEDESC2 ddsd;
|
||||
file.read((char *)&ddsd, sizeof(ddsd));
|
||||
filesize -= sizeof( ddsd );
|
||||
DDSURFACEDESC2 ddsd = deserialize_ddsd(file);
|
||||
filesize -= 124;
|
||||
|
||||
//
|
||||
// This .dds loader supports the loading of compressed formats DXT1, DXT3
|
||||
@@ -195,7 +259,7 @@ opengl_texture::load_DDS() {
|
||||
return;
|
||||
}
|
||||
|
||||
int datasize = filesize - offset;
|
||||
size_t datasize = filesize - offset;
|
||||
/*
|
||||
// this approach loads only the first mipmap and relies on graphics card to fill the rest
|
||||
data_mapcount = 1;
|
||||
@@ -473,7 +537,7 @@ opengl_texture::create() {
|
||||
::glCompressedTexImage2D(
|
||||
GL_TEXTURE_2D, maplevel, data_format,
|
||||
datawidth, dataheight, 0,
|
||||
datasize, (GLubyte *)&data[0] + dataoffset );
|
||||
datasize, (GLubyte *)&data[dataoffset] );
|
||||
|
||||
dataoffset += datasize;
|
||||
datawidth = std::max( datawidth / 2, 1 );
|
||||
@@ -653,7 +717,7 @@ texture_manager::GetTextureId( std::string Filename, std::string const &Dir, int
|
||||
traits += '#';
|
||||
}
|
||||
texture.traits = traits;
|
||||
auto const textureindex = m_textures.size();
|
||||
auto const textureindex = (texture_manager::size_type)m_textures.size();
|
||||
m_textures.emplace_back( texture );
|
||||
m_texturemappings.emplace( filename, textureindex );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user