惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
N
News and Events Feed by Topic
T
Troy Hunt's Blog
PCI Perspectives
PCI Perspectives
W
WeLiveSecurity
N
News | PayPal Newsroom
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V2EX - 技术
V2EX - 技术
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
Cloudbric
Cloudbric
S
Secure Thoughts
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
Y
Y Combinator Blog
L
LangChain Blog
Recorded Future
Recorded Future
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 聂微东
Attack and Defense Labs
Attack and Defense Labs
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
小众软件
小众软件
H
Hacker News: Front Page
The Hacker News
The Hacker News
T
Tailwind CSS Blog
The Register - Security
The Register - Security
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy & Cybersecurity Law Blog
P
Palo Alto Networks Blog
S
Securelist
腾讯CDC
雷峰网
雷峰网
G
Google Developers Blog
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
P
Privacy International News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
www.infosecurity-magazine.com
www.infosecurity-magazine.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
阮一峰的网络日志
阮一峰的网络日志
AI
AI

博客园 - SHARP-EYE

Processing 的 sketch.properties 机制以及主程序与文件夹解耦的具体细节 Processing P2D 模式鼠标约束 · 限制在窗口内 · 技术报告 Kimi Code CLI 系统指令的摸索 以及 开发实战经验分享 开源重置 沙丘2 游戏 · Dune Legacy 中文本地化与渲染技术说明 基于 Irrlicht 和 WASAPI 的 Simple Audio Visualization 技术开发报告 AI Coding越来越强,我们还有必要学Processing吗? · 创意编程 嵌入式脚本语言全解析:从Lua到Wren,游戏与IoT开发的未来选型指南 PixelMentor:一个开源网站 · 调用AI视觉能力分析图片 · 提供影视后期修改意见 基于 Vanilla JS 构建高性能可视化节点创意展示编辑器 (CNE) 的技术实践与深度解析 · Creative Node Editor 关于OpenClaw部署在Ubuntu上的经验小结 P3DE (Processing 3D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v0.4.8 Windows 批量文件操作风险指南 · 不完整小结 [深度复盘] 构建高性能实时弹幕系统:Node.js + Socket.io 架构设计与生产环境部署实战 如何调用CMD实现多个同类文件合并的研究 · 二进制 · 依次 · 文本图像视频音频 Processing (Java) 中实现2D任意图形的鼠标悬停检测 · 2D射线检测 · 模拟按钮 · 点击事件 PowerShell实现全屏七彩渐变 · 呼吸 · 屏保 浅谈processing-java.exe应用程序的使用(与PowerShell的联合) 使用Windows任务计划程序实现每天更换一张Processing创意桌面壁纸 PowerShell开发小工具 · 四张照片拼成一张 CMD批处理脚本+VBScript脚本+Potplayer 实现文件夹内所有视频的截图任务(指定时间点) 批处理脚本(.bat)实现实时监测文件夹并执行命令 [假设有新文件则拷贝到远程文件夹内] PowerShell开发游戏 · 打蜜蜂 Powershell实现圆缩小放大 (实时刷新窗口)
Processing在P2D模式下使用 tint() 方法的注意事项 · 只对 image() 和纹理有效
SHARP-EYE · 2026-05-20 · via 博客园 - SHARP-EYE

在 P2D(OpenGL)里,tint() 只对 image() 和纹理有效,不会影响 fill()/stroke() 画的普通形状**。


一、tint() 到底是干嘛的?

官方定义一句话:

tint() = 给图像/纹理“叠加颜色+透明度”,是 image() 的“专属 fill”。

  • 对 image(img, x, y):有效,每个像素都会乘上 tint 颜色(含透明)。
  • 对 rect()/ellipse()/triangle() 等:无效,P2D 下完全不理 tint,只认 fill()/stroke()。
  • 对 3D 纹理(texture() + shape()):有效, tint 会乘到纹理上。

二、为什么 P2D 下 fill/stroke 不受 tint 影响?

  • JAVA2D(默认):老的 2D 渲染,内部实现简单,tint 会“意外”影响部分形状(非标准行为)。
  • P2D/P3D(OpenGL):走标准图形管线:
    • 普通形状:用 fill/stroke → 直接顶点+纯色,不经过纹理采样,所以 tint 插不进来。
    • image/纹理:走 纹理采样 → 乘 tint 颜色 → 输出, tint 在这里生效。

简单记:tint 只作用“带纹理的绘制”,纯色形状不走这步

三、如果你想让 P2D 形状也有“tint 效果”

方案1:直接改 fill/stroke 的 alpha(最常用)

size(400, 400, P2D);
// 红色,半透明(等效 tint(255,0,0,128) 给形状)
fill(255, 0, 0, 128);
rect(50, 50, 100, 100);

方案2:用一张 1×1 纯白图当纹理,再 tint(统一写法)

PImage whiteTex;

void setup() {
  size(400, 400, P2D);
  whiteTex = createImage(1, 1, RGB);
  whiteTex.set(0, 0, color(255)); // 纯白
}

void draw() {
  background(0);
  tint(255, 0, 0, 128); // 红色半透明
  texture(whiteTex);
  beginShape();
  vertex(50, 50);
  vertex(150, 50);
  vertex(150, 150);
  vertex(50, 150);
  endShape(CLOSE);
  noTint(); // 关闭 tint,避免影响后续 image
}

方案3:用 PGraphics 离屏绘制 + tint(复杂场景)

PGraphics pg;

void setup() {
  size(400, 400, P2D);
  pg = createGraphics(200, 200, P2D);
  pg.beginDraw();
  pg.fill(255, 0, 0);
  pg.rect(0, 0, 200, 200);
  pg.endDraw();
}

void draw() {
  background(0);
  tint(255, 128); // 半透明
  image(pg, 100, 100);
}

四、一句话总结

  • P2D 下 tint():只认 image() 和纹理,不认 fill()/stroke() 形状
  • 要形状透明/染色:直接改 fill/stroke 的 alpha,或用纯白纹理+ tint

一次性、完整、清晰列出:在 Processing 里,专门只对 image() 生效、对 fill()/stroke()/形状完全无效**的函数清单,全部是 P2D / P3D / 默认渲染器都通用的规则。


附录

只对 image() 生效的函数(形状完全无效)

这些函数只控制图片的绘制方式,跟 rect()、ellipse()、line() 一毛钱关系都没有。

1. tint()

你已经知道了:染色、透明,只作用于图片/纹理。

2. noTint()

关闭 tint,只影响后续的 image()。

3. imageMode()

控制 image() 的坐标模式(CENTER/CORNER/CORNERS)。
对形状完全无效。

4. textureWrap()

控制纹理重复模式(CLAMP/REPEAT)。
只对纹理和 image() 有效

5. textureMode()

控制纹理坐标是 IMAGE 还是 NORMAL。
只影响图片/纹理


特别容易误会:这些函数不是只对 image() 有效

很多人以为它们只对图片生效,但其实形状也能用

  • blendMode() → 图片、形状、文字全都生效
  • alpha() → 全局生效
  • filter() → 作用于整个画布,不是只作用 image
  • mask() → 是 PImage 的方法,不是绘制时的函数

超简短总结(记这个就够)

真正只对 image() 生效的函数只有 5 个:

  1. tint()
  2. noTint()
  3. imageMode()
  4. textureWrap()
  5. textureMode()

其余几乎所有绘制函数(fill、stroke、blendMode 等)都是全局生效。


Processing 绘制函数作用范围对照表

函数 仅对 image()/纹理 生效 仅对图形形状(rect/ellipse/line等)生效 全局通用(图片+形状+文字全生效) P2D/P3D 渲染器差异
tint() P2D严格只作用图像;JAVA2D会顺带影响形状
noTint() 同上,仅清除图像染色
imageMode() 纯图像坐标规则,形状不受控
textureMode() 仅控制纹理贴图坐标
textureWrap() 仅控制纹理平铺/裁切
fill() 纯色形状填充,图像无效
stroke() 形状描边,图像无效
noFill() 只控形状
noStroke() 只控形状
strokeWeight() 仅形状线条粗细
strokeCap() 仅线条端点样式
strokeJoin() 仅线条转角样式
blendMode() 所有绘制内容混合叠加通用
pushStyle()/popStyle() 存储恢复全部绘制样式
smooth()/noSmooth() 抗锯齿全局生效
textSize()/textAlign() 仅文字 独立文字样式体系
filter() 画布全局 整屏后处理,非绘制时属性
background() 画布底层 清空画布专用

核心速记

  1. 图像专属:tint、imageMode、纹理相关 → 只管图
  2. 形状专属:fill/stroke/描边粗细样式 → 只管几何图形
  3. 全局通吃:混合模式、平滑、样式栈 → 全部生效
  4. P2D关键区别:OpenGL渲染下彻底隔离图像与形状样式,互不干扰