You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Minecraft Coder Pack(MCP)中将图像裁剪为屏幕矩形

解决方案:用OpenGL裁剪功能限制圆形绘制区域

因为Minecraft原生的Gui.drawModalRectWithCustomSizedTexture没有内置裁剪功能,你可以直接用OpenGL的**裁剪测试(Scissor Test)**来实现,这是原生Java版Minecraft支持的方法,不需要依赖Forge等Mod API。

具体步骤及代码修改

  1. 启用裁剪测试并设置屏幕上的目标裁剪矩形
  2. 执行你原本的纹理绘制代码
  3. 关闭裁剪测试,恢复绘图状态(避免影响后续游戏UI绘制)

修改后的代码示例:

// 定义你要裁剪到的屏幕矩形参数:x坐标,y坐标,宽度,高度
int clipX = 30;
int clipY = 100;
int clipWidth = 20; // 示例:只显示20x20的区域
int clipHeight = 20;

// 启用OpenGL裁剪测试
GL11.glEnable(GL11.GL_SCISSOR_TEST);
// 转换坐标:Minecraft UI坐标以左上角为原点,OpenGL裁剪坐标以左下角为原点
int windowHeight = mc.displayHeight;
GL11.glScissor(clipX, windowHeight - (clipY + clipHeight), clipWidth, clipHeight);

// 你的原有绘制代码
mc.getTextureManager().bindTexture(new ResourceLocation("Garbg/Circle.png"));
Gui.drawModalRectWithCustomSizedTexture(30, 100, 0, 0, 25, 25, 25, 25);

// 关闭裁剪测试,恢复正常绘图
GL11.glDisable(GL11.GL_SCISSOR_TEST);

关键说明

  • GL_SCISSOR_TEST:启用后,OpenGL只会在指定矩形内绘制内容,超出部分会被直接裁剪
  • 坐标转换:必须把Minecraft的UI坐标转换成OpenGL裁剪坐标,否则裁剪区域会出现在屏幕错误位置
  • 务必关闭裁剪测试:如果不关闭,后续所有游戏UI都会被限制在这个矩形内,导致显示异常

如果你是想把圆形纹理缩放到指定矩形区域(而非裁剪超出部分),可以直接修改绘制方法的参数:

// 把圆形缩放到30,100位置的20x20矩形内
mc.getTextureManager().bindTexture(new ResourceLocation("Garbg/Circle.png"));
Gui.drawModalRectWithCustomSizedTexture(30, 100, 0, 0, 20, 20, 25, 25);

这里的20,20是屏幕上要绘制的矩形大小,最后的25,25是原始纹理的尺寸,圆形会自动适配到目标矩形区域。

内容的提问来源于stack exchange,提问作者Garbg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:40:39