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

README 中有对应的 C++实现

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

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

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

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

[杂项]记一次远程桌面卡在请稍候的解决方法

可能是因为修改过远程电脑的密码,我这边出现了输入密码后会卡在“请稍候”的界面上。

具体地说,远程桌面会提示凭证已过期,重新输入密码并连接后会发生上面提到的事情。

可以试试用以下方法解决(win10 为例):

  1. 打开设置
  2. 搜索并打开“凭据管理器”
  3. 点击 windows 凭据
  4. 选择你要登录的电脑的凭据,点击红色箭头指向的按钮
  5. 点击删除,并选择确定
  6. 最后重新使用远程桌面连接即可(会要求输入密码)


[Vulkan]GLSL language integration 支持

下载插件

请直接参考这个教程:

Visual Studio 设置 shader(CG 、GLSL)语法提示及高亮和显示行号 使用 GLSL language integration 插件_shader 使用 studio 显示行数-CSDN 博客

添加 Vulkan 支持

配置完插件后,插件只支持 OpenGL 相关的关键字/变量

想要支持 Vulkan 相关的(比如:gl_VertexIndex、推送常量等等)

在工具->选项中按照以下内容进行配置

这里方便你直接复制:

–target-env vulkan1.2
%VK_SDK_PATH%\Bin\glslangValidator.exe

注意: VK_SDK_PATH 这个环境变量要装了 LunarG 的 SDK 才有(装的时候自动生成的)。总之给出 glslangValidator 的路径就是了

Vulkan

[Vulkan]应用开发指南勘误

以下提及的内容来自李晓波翻译版本(19 年印)

2.3.4 稀疏资源(P62)

调用 vkGetImageSparseMemoryRequirements 时,参数中的图像创建时除了带有 VK_IMAGE_CREATE_SPARSE_BINDING_BIT 以外,还需要带有 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT (以及实例创建时需要指定相关的 Feature)

Vulkan

[OpenGL]纹理数组的一些小细节

以二维纹理数组为例

texture(tex, vec3(x, y, index))

实际会取到的纹理由 index 四舍五入得到。此外,index 使用时会被限制在 0~数组大小–1 之间

如果有一个三层的纹理数组

index 为-1 则取第一个;为 1.2 取第二个;为 1.9 取第三个(你可以理解为强制 GL_NEAREST)

OpenGL