[Next]文本资源与组件代码分离的方式

可以使用raw-loader将文本(比如.md, .wgsl)单独放在文件内

配置完成后,开发环境下修改文本,引用了文本的组件也会对应更新

下文以配置.md为例

  1. 安装 raw-loader
    SHELL
    npm add raw-loader
    
  2. 配置next.config.ts
    TYPESCRIPT
    const nextConfig: NextConfig = {
      webpack: (config) => {
        config.module.rules.push({
          test: /\.md$/i,
          use: "raw-loader",
        });
        return config;
      },
    };
    
  3. 找个地方写d.ts
    TYPESCRIPT
    declare module "*.md" {
      const content: string;
      export default content;
    }
    
  4. 使用文件时正常引用即可
    TYPESCRIPT
    import foo from "./foo.md";
    console.log(typeof foo); // string
    
Next.js

[Vulkan]Vulkan.hpp智能指针的使用

直接使用

CPP
auto instance = vk::CreateInstanceUnique({});

搭配其他不返回智能指针的库使用

CPP
vk::SurfaceKHR ret;
glfwCreateWindowSurface(instance, window, nullptr, &ret);
auto surface = vk::UniqueSurfaceKHR(
    vk::SurfaceKHR(ret),
    vk::UniqueSurfaceKHR::ObjectDestroy(instance));
Vulkan



[JPEG]解码参考资料 & 注意事项

README 中有对应的 C++实现

截止至 22 年 3 月 20 号,其 C++实现对应的 APP0 处理是错误的,请注意

直接拖到文章尾部,可以看到一维 IDCT 的公式

还有一些细节是以上教程没有强调或者没有提到的,同时其他教程也没有提及甚至是错误的地方:

  • jpg 是按大端模式储存数据的
  • 按比特读取压缩流要从高位(靠近符号位的地方)向低位读取
    • 顺带一提,gif 按比特读取压缩流是从低位开始读的
  • 如果读取到的哈夫曼码对应的需要继续读取的位数为 0 位,则视为读取到的数字是 0
    • 这个会在读取直流变量的时候遇到
    • 另外读取交流变量的时候会遇到权值为 0xF0 的情况,上文教程说这个是连续写入 16 个 0 的意思。其实也可以理解为写入 15 个 0,再读取 0 位数字
  • 颜色分量是按 Y、Cb、Cr排布的,别搞反了
未分类