关于preA精度损失分析

这是一份关于 RGBA8888 格式下,Pre-multiplied Alpha (预乘 Alpha, 简称 PreA)Straight Alpha (非预乘 Alpha/直通 Alpha, 简称 Non-PreA) 在精度损失和不同颜色数据范围内表现的深度分析。

阅读全文

SRGB 和gamma校正

为了让你直观地感受到 Gamma 校正(Gamma Encoding) 的威力,我们来做一次具体的数值对比。

我们假设使用的标准 Gamma 值为 2.2
公式为:
$$ \text{Gamma值} = \text{线性值}^{(1 / 2.2)} \approx \text{线性值}^{0.4545} $$

阅读全文

在 C++ 中,条件变量和信号量对比

在 C++ 中,信号量(Semaphore) 提供了一种基于“计数器”的同步机制。

需要注意的是,标准的信号量 std::counting_semaphorestd::binary_semaphore 是在 C++20 才正式引入的。如果你严格限制在 C++11 环境,通常需要自己封装 POSIX 信号量(sem_t)或 Windows 信号量,或者使用 Boost 库。

阅读全文

Java中的布尔类型

Java 中的 boolean 与数值类型(int 等)是不同的原始类型,语言层面既不允许隐式转换,也不允许显式强制转换。

  • 不允许的示例
    • int i = true;boolean b = 1;b = (boolean) 1; 都会编译报错
    • if (1) {} 在 Java 中非法(不同于 C/C++),只能 if (b)if (表达式为 boolean)

阅读全文