Java 处理PApplet加载图像不工作

Java 处理PApplet加载图像不工作,java,processing,textures,loadimage,Java,Processing,Textures,Loadimage,我正在一个简单的Java项目中使用processing.core.PApplet库 我在设置功能中加载了多个图像,并尝试在绘制功能中绘制它们,但奇怪的是纹理没有出现 下面是我用来加载它们的代码: public void init()抛出FileNotFoundException{//this get在我的草图的'setting'函数中执行 Registry.register(getImage(“void”),“void”); } public processing.core.PImage get

我正在一个简单的Java项目中使用
processing.core.PApplet

我在
设置
功能中加载了多个图像,并尝试在
绘制
功能中绘制它们,但奇怪的是纹理没有出现

下面是我用来加载它们的代码:

public void init()抛出FileNotFoundException{//this get在我的草图的'setting'函数中执行
Registry.register(getImage(“void”),“void”);
}
public processing.core.PImage getImage(字符串名称)引发FileNotFoundException{
String path=“src\\main\\resources\\blocks\\textures\\”+name+“.png”;
文件=新文件(路径);
if(file.exists()){
Logger.info(“纹理”+文件.getAbsolutePath()+“已找到”,“纹理映射”);
返回sketch.loadImage(路径);
}否则{
抛出新的FileNotFoundException(“文件”+文件.getAbsolutePath()+“未找到”);
}
}
我用来画其中一个的代码是:

//我在草图的“draw”功能中创建并绘制了一个新的立方体
//但它看起来没有任何纹理
公共多维数据集(processing.core.PApplet草图,BlockPos pos,@NotNull Block){
this.sketch=草图;
this.block=块;
位置=位置;
texture=Registry.getTextures().get(“minecraft:void”);
texture.loadPixels();
}
公众抽签(){
sketch.pushMatrix();
sketch.translate(position.getX(),position.getY(),position.getZ());
草图.方框(10);
素描.纹理(纹理);//什么都不做
sketch.popMatrix();
}
文件就在那里,我的
记录器
说它们被找到了,我没有得到任何错误,但是纹理具有图像的所有属性

第二件奇怪的事:
在使用
draw
方法之前,我在
draw
函数中执行此操作:

sketch.image(Registry.getTextures().get(“minecraft:void”),10,10);
在那里,图像可以完美加载

是的,我正在做一个我发现的地雷船克隆

texture()
仅在
preDraw()
postDraw()
函数之间运行时才起作用,但
box()
函数包含这些步骤,因此无法工作,您必须使用顶点创建立方体
加工为我们提供了一个例子,使它

我自定义这个示例的方法是创建顶点的
类,也可以设置大小,如下所示:

公共类框{
私人最终剪纸素描;
私人最终智力量表;
公用方框(PApplet草图,整数比例){
this.sketch=草图;
这个比例=比例;
}
公共void generateVertex(PImage纹理){
草图.比例尺(比例尺);
sketch.beginShape(sketch.QUADS);
素描.纹理(纹理);
//+Z“前”面
顶点(-1,-1,1,0,0);
顶点(1,-1,1,1,0);
顶点(1,1,1,1,1);
顶点(-1,1,1,0,1);
//-Z“后”面
顶点(1,-1,-1,0,0);
顶点(-1,-1,-1,1,0);
顶点(-1,1,-1,1,1);
顶点(1,1,-1,0,1);
//+Y“底”面
顶点(-1,1,1,0,0);
顶点(1,1,1,1,0);
顶点(1,1,-1,1,1);
顶点(-1,1,-1,0,1);
//-Y“顶”面
顶点(-1,-1,-1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,-1,1,1,1);
顶点(-1,-1,1,0,1);
//+X“右”面
顶点(1,-1,1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,1,-1,1,1);
顶点(1,1,1,0,1);
//-X“左”面
顶点(-1,-1,-1,0,0);
顶点(-1,-1,1,1,0);
顶点(-1,1,1,1,1);
顶点(-1,1,-1,0,1);
sketch.endShape();
}
public int getScale(){
回报率;
}
}
这完美地解决了我的问题,现在我有了一个有纹理的立方体

我找到了

texture()
仅在
preDraw()
postDraw()
函数之间运行时才起作用,但
box()
函数包含这些步骤,因此无法工作,您必须使用顶点创建立方体
加工为我们提供了一个例子,使它

我自定义这个示例的方法是创建顶点的
类,也可以设置大小,如下所示:

公共类框{
私人最终剪纸素描;
私人最终智力量表;
公用方框(PApplet草图,整数比例){
this.sketch=草图;
这个比例=比例;
}
公共void generateVertex(PImage纹理){
草图.比例尺(比例尺);
sketch.beginShape(sketch.QUADS);
素描.纹理(纹理);
//+Z“前”面
顶点(-1,-1,1,0,0);
顶点(1,-1,1,1,0);
顶点(1,1,1,1,1);
顶点(-1,1,1,0,1);
//-Z“后”面
顶点(1,-1,-1,0,0);
顶点(-1,-1,-1,1,0);
顶点(-1,1,-1,1,1);
顶点(1,1,-1,0,1);
//+Y“底”面
顶点(-1,1,1,0,0);
顶点(1,1,1,1,0);
顶点(1,1,-1,1,1);
顶点(-1,1,-1,0,1);
//-Y“顶”面
顶点(-1,-1,-1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,-1,1,1,1);
顶点(-1,-1,1,0,1);
//+X“右”面
顶点(1,-1,1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,1,-1,1,1);
顶点(1,1,1,0,1);
//-X“左”面
顶点(-1,-1,-1,0,0);
顶点(-1,-1,1,1,0);
顶点(-1,1,1,1,1);