2025-02-25 21:36:19 +08:00
2024-12-02 12:07:36 +08:00
2024-12-02 12:07:36 +08:00
2024-12-02 12:07:36 +08:00
2025-02-24 16:07:37 +08:00
2024-12-02 12:07:36 +08:00
2025-01-14 16:58:15 +08:00
2024-12-02 12:07:36 +08:00
2024-12-02 12:07:36 +08:00
2024-12-02 12:07:36 +08:00
2025-01-22 11:22:46 +08:00
2024-12-02 12:07:36 +08:00
2025-01-22 11:22:46 +08:00
2025-02-25 21:36:19 +08:00
2024-12-02 12:07:36 +08:00
2024-12-02 12:07:36 +08:00

L4D2 Too Many Indices Fix

用来处理这个问题:

26cc8e80ba807d378291266749f824bc

临时说明

目前由于不知名原因 patch 在部分机子上可能无效,因此请测试 1.1.0 和 1.1.1 两个版本,哪个能用就先用哪个。

等我写完我的中期报告后再 debug

编译

just config build

原理解析:

虽然一开始是靠逆向找的,后来发现自己犯傻了,明明 source 引擎是开源了部分内容的,直接看源代码不香么 QAQ

逆向的话,基本上就是定位字符串,之后 trace 追一下代码的执行流(或者直接搜索立即数 0x8000,反正也没几个结果,之后猜一下函数是干什么的)

从源代码更简单,直接看就行了。

enum
{
	VERTEX_BUFFER_SIZE = 32768,  // 罪魁祸首,你开这么小的 buffer 干什么
	MAX_QUAD_INDICES = 16384,
};

位置: https://github.com/nillerusr/source-engine/blob/29985681a18508e78dc79ad863952f830be237b6/materialsystem/shaderapidx9/meshdx8.cpp#L71

对比 dx10:(32倍差距)

VERTEX_BUFFER_SIZE = 1024 * 1024

修正方法

一开始是直接 patch 立即数,但是 L4D2 更新有点频繁,就索性直接写成动态 patch 了。

S
Description
No description provided
Readme 308 KiB
Languages
C++ 94.1%
Just 3.4%
Lua 2.5%