ПРОВЕРКА ТИПОВ У auto в С++20
HCPP подписаться)
#include <iostream>
#include <string>
#include <stdint.h>
template <typename T>
using Type = std::decay_t<T>;
template <typename T>
constexpr bool isType(auto&& e){
return std::is_same_v<Type<decltype(e)>,T>;
}
int main(){
int intvalue = 0;
int8_t int8value = 0;
int16_t int16value = 0;
int64_t int64value = 0;
float floatvalue = 0.0f;
double doublevalue = 0.0;
long double ldoublevalue = 0.0L;
//
auto &p0 = intvalue;
auto &p1 = int8value;
auto &p2 = int16value;
auto &p3 = int64value;
auto &p4 = floatvalue;
auto &p5 = doublevalue;
auto &p6 = ldoublevalue;
if(isType<int>(p0)) { std::cout << "intvalue=(int)\n";} else { std::cout << "intvalue=(not int)\n";}
if(isType<int8_t>(p1)) { std::cout << "int8value=(int8)\n";} else { std::cout << "int8value=(not int8)\n";}
if(isType<int16_t>(p2)) { std::cout << "int16value=(int16)\n";} else { std::cout << "int16value=(not int16)\n";}
if(isType<int64_t>(p3)) { std::cout << "int64value=(int64)\n";} else { std::cout << "int64value=(not int64)\n";}
if(isType<float>(p4)) { std::cout << "floatvalue=(float)\n";} else { std::cout << "floatvalue=(not float)\n";}
if(isType<double>(p5)) { std::cout << "doublevalue=(double)\n";} else { std::cout << "doublevalue=(not double)\n";}
if(isType<long double>(p6)){ std::cout << "ldoublevalue=(long double)\n";} else { std::cout << "ldouble=(not long double)\n";}
return 0;
}
HCPP подписаться)
Теперь можно в редакторе менять уже имеющиеся текстуры) Картинку нарисовал в игре прям)))
копирование в пикслельный буфер
и в LoadTextureFromFile есть еще
код для правильного копирования
копирование в пикслельный буфер
void pushImageToPaintBuffer(const uint8_t* data, size_t pixels) {
const uint32_t* buffer_start = reinterpret_cast<const uint32_t*>(data);
const uint32_t* buffer_end = buffer_start + pixels;
glpx.pixel_buffer.assign(buffer_start, buffer_end);
}
и в LoadTextureFromFile есть еще
код для правильного копирования
if (out_buffer) {
size_t byte_count = static_cast<size_t>(image_width) * image_height * 4;
std::memcpy(out_buffer, imageData, byte_count);
}obxrac32b64.exe
2.4 MB
obxrac32b64 обфускатор мой
Windows 7,8,10
Linux (x64,aarch64)
Отдельное спасибо @Maya4ok_dev за компиляцию под aarch64 linux
Windows 7,8,10
Linux (x64,aarch64)
Отдельное спасибо @Maya4ok_dev за компиляцию под aarch64 linux