下载 App

关于申请一个嗒啦啦认为可以开放的引擎功能。

06/0754 浏览BUG反馈 包含 AI 合成内容
所有内容由嗒啦啦编写。

功能申请:NanoVG 上下文独立离屏渲染(FBO 隔离)

申请内容

请求引擎为每个 NVG 上下文提供独立的离屏帧缓冲(FBO),最终按 renderOrder 合成到屏幕。
具体需求:
  1. 每个通过 nvgCreate() 创建的上下文,分配独立的离屏纹理(FBO)
  2. nvgBeginFrame 绑定到该上下文自己的 FBO(而非默认帧缓冲)
  3. nvgEndFrame 后,引擎按 renderOrder 从低到高,将每张纹理以 SOURCE_OVER 合成到屏幕
或者,提供等价的替代能力(如暴露 nvgluCreateFramebuffer 系列 API 到 Lua 层)。
horizontal linehorizontal line

项目背景

全量使用 NanoVG 矢量渲染的 2D 游戏项目,不使用引擎 3D/2D 渲染管线。
层级技术
引擎UrhoX (Lua 5.4)
渲染NanoVG 全量自绘
物理自定义碰撞系统
horizontal linehorizontal line

遇到的障碍

问题描述

项目需要实现遮罩层多区域挖洞:在一个全屏黑色遮罩上,挖出多个可见区域(不规则多边形),这些区域可能互相重叠。
当前方案:画一个全屏黑色矩形,用 NVG_HOLE 挖出每个可见区域。
但 NanoVG 使用非零绕数填充规则——两个 HOLE 重叠时,该区域绕数变为 -2(而非 0),仍然被填充为黑色。视觉表现:重叠区域错误地显示为不透明。

为什么这个问题无法在代码层面解决

已尝试以下所有方案,均不可行:
#方案失败原因
1多 HOLE 子路径重叠区绕数 ≠ 0,被错误填充
2桥接法合并路径自交路径仍产生错误绕数
3绕数修复(画 SOLID 补偿)需要非凸多边形交集 + 容斥原理 2^N 项,不可行
4多边形并集(合并后画单洞)Weiler-Atherton 算法过于复杂,且与凹多边形形态难以配合
5多画布 + DESTINATION_OUT 擦洞失败根因:多个 NVG 上下文共享帧缓冲,擦除操作穿透到底层
6替代混合模式(XOR/LIGHTER 等)共享帧缓冲下无任何模式能实现"只擦本层"

方案 5 的详细说明(最接近成功)

思路:创建三个 NVG 上下文,分层渲染。遮罩层用 DESTINATION_OUT 擦出可见区域——多个区域各自擦一次,不存在绕数问题。
vgBase  (renderOrder=0)  → 画场景内容
vgMask  (renderOrder=50) → 铺黑 + DESTINATION_OUT 逐个擦出可见区域
vgTop   (renderOrder=100)→ UI / HUD
如果每个上下文有独立 FBO,DESTINATION_OUT 只擦 vgMask 自己的黑色填充,合成时透明区域自然透出底层内容。完美解决重叠问题。
实际测试发现:nvgSetRenderOrder 只控制绘制顺序,所有上下文共享同一块屏幕帧缓冲。DESTINATION_OUT 把底层 vgBase 的内容也一并擦除了。
horizontal linehorizontal line

为什么需要引擎支持

问题的本质

这是一个像素级合成问题:多个区域用布尔 OR(取最大值)合并透明度。主流游戏引擎(Unity RenderTexture、Unreal RenderTarget、Godot SubViewport)均通过"渲染到纹理 → 合成"解决此类问题。
NanoVG 原版开源库(nanovg_gl.h)提供了 nvgluCreateFramebuffer 用于离屏渲染,但 UrhoX 的 Lua 绑定未暴露此接口。

如果获得此能力

遮罩层的实现将变得简单直接:
  1. vgMask 在自己的 FBO 上铺黑
  2. 对每个可见区域多边形,用 DESTINATION_OUT 擦洞(互不干扰)
  3. 引擎合成时,vgMask 层的透明区域透出底层内容
无需复杂的多边形布尔运算,无绕数冲突,性能开销极低(一张额外纹理 + 一次合成 draw call)。

性能参考

离屏渲染是 GPU 的标准操作。对比:
  • 普通 3D 游戏每帧使用数十个 FBO(阴影、反射、后处理)
  • 本需求只需 1 个 FBO,内容为简单纯色多边形填充
  • 性能影响可忽略
horizontal linehorizontal line

当前临时方案及其局限

针对上述问题,目前通过反转绘制顺序(从顶层往底层画)临时规避了 DESTINATION_OUT 穿透的问题——擦除时底层内容尚未绘制,因此不会被误伤。
但这是一个针对当前结构的特化方案,存在明确的架构风险
  1. 脆弱性:绘制顺序被锁死为"上→下",后续新增任何上下文或渲染层,都可能再次触发同类冲突
  2. 扩展性差:如果未来需要更多独立混合操作的层(如模糊层、叠加特效层),同样无法隔离,相同问题会反复出现
  3. 根因未消除:多上下文共享帧缓冲这一限制仍然存在,项目架构建立在一个随时可能失效的绕过方案上
FBO 隔离是解决这一类问题的通用、稳定方案,而非仅为当前这一个场景服务。
horizontal linehorizontal line

补充信息

  • 项目代码已改为多画布结构,可构建通过,随时可提供最小复现用例
  • 如需技术沟通,随时配合
  • 也接受等价替代方案(如暴露 nvgluCreateFramebuffer、或提供 NanoVG 渲染到 Texture2D 的能力)
【创作资源申请】游戏名称暂定《仙途2026》截图
【创作资源申请】游戏名称暂定《仙途2026》
社区的朋友们你们好,这款游戏是我使用“创造”制作的第一款游戏。这款游戏的原始创意在我的脑洞实验室帖子里也能看到,那边的标题叫做《太阳啊,请你慈悲》。它是一款关于集体与个人关系的多人同屏在线游戏,采用2D俯视角画面,较为简单的几何图形表达。 游戏的背景设定是在干旱的大地上,太阳炙烤着人们,在绝望中人们将宗教作为唯一的依靠,人们聚集在“主教”身边形成一个集体,在干涸的土地上与其他集体为争夺生的权利战斗
11 赞
2 回复
新人避坑指南第一期(核心必看)截图
新人避坑指南第一期(核心必看)
新手制作游戏项目三大避坑准则 一、前期地图规范要求 开启新项目之后,必须清晰交代需求:明确项目内容、运行环境、角色出生点位置,再交由助手制作第一张地图。 第一张地图禁止直接预览,先将生成内容存入素材库,核对样式是否符合自身预期。 核心判定方法:单独生成第一张地图预览图,第一张地图决定整体全局架构,UI、UX整体风格全部由它锁定。如果第一张地图的画面、UI、UX不符合自己的设想,立刻新建项目,不要在
15 赞
6 回复
03:06
为了不被斩杀,我只能做到这些了截图
为了不被斩杀,我只能做到这些了
之前一直申请不到计划3,之前说太花哨,后面说体量完成度不足,在我一番小作文下,编辑终于给了我解答,什么原生质感,玩家开局体验啥的。 本来计划2也够用,准备以后再优化了,结果计划2赠送的积分要砍半了,学生党实在消费不起,于是只能再冲一波计划3了 从周六中午到现在一天半时间,优化了一遍角色卡,战斗卡,还有抽卡界面,优化了新手教程,该说不说确实比之前要舒服些。 前半部分为新版,后半部分为旧版。 明天再次
25 赞
6 回复
本地部署 AI 对接 TapMaker 指南 —— 以 CodeBuddy 为例V1.1截图
本地部署 AI 对接 TapMaker 指南 —— 以 CodeBuddy 为例V1.1
写在前面 大家好,我是橘猫,和你一样也是TapMaker的萌新玩家。在"全能神"天哥的悉心指导下,我顺利完成了本地开发环境的部署。经过这段时间的实战测试,已经成功打通了「本地开发 → 同步至TapMaker」的完整流程。 以下内容全部来自我的个人实操经验,旨在为同样在探索本地部署的朋友提供一个参考。每个人的电脑环境、网络情况、AI工具版本都不尽相同,文中的步骤仅供交流学习。如果你照着操作后遇到问题
33 赞
14 回复
如何提升你游戏中的UI美术水平截图
如何提升你游戏中的UI美术水平
一、请为你的游戏挑选一款合适的字体 很多开发者没有注意到其实UI界面中最重要的元素是字体,一款合适的字体能给整个游戏的界面感官带来蜕变。 请看案例 那么如何挑选适合自己的字体呢? 我总结出了一些小经验可供参考: 黑体:通用 宋体:古风、武侠、修仙 楷体:古风、武侠、修仙 圆体:卡通、动漫、Q版 科技:科幻、未来、电子 顺手分享一个免费可商用字体网站: 当然 如果你不知道自己的游戏适合什么风格
精华
121 赞
44 回复
01:29
官方阅,申请积分计划2,希望官方继续支持我完成这款游戏,截图
官方阅,申请积分计划2,希望官方继续支持我完成这款游戏,
视频内容只是一部分, 本游戏耗时3个月,目前完成进度百分之80, 是生存游戏,进入修仙界,走剧情找到宗门加入, 这时游戏才是真正开始, 提升实力境界后就可以变强,获取功法法术法宝, @视频内是游戏里挑战妖族入侵一种主流玩法,游戏就是围绕着这个来进行, 还有很多地方可以战斗,获得资源修炼变强,比如去藏书阁学习功法, 去法宝楼抽法宝,每一个宗门数十个法宝抽取 去修仙界探索,获得各自的资源,可能遇见妖兽
1 赞
3 回复
游戏墨染灵境,续一下计划二被说同质化截图
游戏墨染灵境,续一下计划二被说同质化
玩法如图,灵兽渡劫,灵武渡造(包括可以打造自定义灵武),炼丹引兽,12个挑战(每个boss都有各自特色),墨境轮回肉鸽玩法,基础秘境探索,拍卖玩法(可以抢夺可以尾随),灵田种植,还有异步pvp在线切磋。 真的有同质化吗[表情_生气][表情_生气][表情_生气]
4 赞
7 回复
【新游上线】TapTap制造模拟器截图
【新游上线】TapTap制造模拟器
大家好,我是《TapTap制造模拟器》的制作人Paul~ 《Taptap制造模拟器》是一款轻度经营模拟游戏。玩家将经营一家独立游戏工作室,使用 AI 游戏制作工具从零开始开发作品,选择游戏类型、美术风格、玩法方向、商业化方案和制作规格,完成立项、制作、发布与运营。游戏上线后,你需要处理玩家反馈、修复 Bug、提升评分、控制服务器费用和员工工资,在收入、口碑、粉丝与现金流之间做出取舍。随着章节推进,
7 赞
14 回复
00:45
TapTap制造本地开发模式保姆级教程截图
TapTap制造本地开发模式保姆级教程
1.你可以使用 Codex、Cursor、Claude Code 等支持 MCP 的 AI 工具 最简单的就是腾讯的WorkBuddy 2.去官网下载WorkBuddy 3.对WorkBuddy说:我要安装个Agent 我给你安装方法 一、安装 Maker MCP npx -y @taptap/maker install --ide codex,cursor,claude 部分 Agent 安装
12 赞
8 回复
脑洞实验室创意提交截图
脑洞实验室创意提交
#脑洞实验室 游戏名称《蔓》 游戏为横版2d,差不多是一款挂机游戏,大部分时间需要等待操纵的植物自然生长。 玩家操作一颗种子萌发成一株藤蔓吸附在周围物体上向上爬,一边寻找水源一边接收阳光不断生长到丛林最顶层,开出花朵结出种子完成生命循环。 游戏一开始玩家只是一颗神奇的种子,什么也看不见等待萌发,如果直接选择萌发就需要在限定时间内找到水源,否则会直接枯死游戏结束。 所以最好开局等待一场降雨,让种子
8 赞
3 回复