Add Music fluctuations project and Chinese plan docs

This commit is contained in:
2026-03-21 15:55:54 +08:00
parent 629455df07
commit a172d75e36
462 changed files with 382904 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
#define STB_IMAGE_IMPLEMENTATION
#include"stb_image.h"
#include "image.h"
Image::Image(const int& width, const int& height, RGBA* data) {
m_width = width;
m_height = height;
if (data) {
m_data = new RGBA[m_width * m_height];
memcpy(m_data, data, sizeof(RGBA) * m_width * m_height);
}
}
Image::~Image() {
if (m_data != nullptr) {
delete[] m_data;
}
}
//仅接收(-11的参数
RGBA Image::GetColor(const float& p_u, const float& p_v)
{
if (!m_data) { return RGBA(255,255,255,255); }
/*此处注意截断误差不要直接算index一定要让x和y分别截断一下*/
int x = fmod(p_u + 1, 1.f) * m_width;
int y = fmod(p_v + 1, 1.f) * m_height;
return m_data[x + y * m_width];
}
Image* Image::CreateImage(const std::string& path) {
int picType = 0;
int width{ 0 }, height{ 0 };
stbi_set_flip_vertically_on_load(true);
unsigned char* bits = stbi_load(path.c_str(), &width, &height, &picType, STBI_rgb_alpha);
for (int i = 0; i < width * height * 4; i += 4)
{
BYTE tmp = bits[i];
bits[i] = bits[i + 2];
bits[i + 2] = tmp;
}
Image* image = new Image(width, height, (RGBA*)bits);
stbi_image_free(bits);
return image;
}
void Image::DestroyImage(Image* image) {
if (image) {
delete image;
}
}