Java LWJGL 3D渲染不工作
我在这里设置了一个主类,用于渲染ArrayList中的块,但是我只看到最后一个要渲染的块。为什么我只能看到ArrayList中的最后一个块 这是我在主类中渲染块的地方:Java LWJGL 3D渲染不工作,java,3d,render,lwjgl,Java,3d,Render,Lwjgl,我在这里设置了一个主类,用于渲染ArrayList中的块,但是我只看到最后一个要渲染的块。为什么我只能看到ArrayList中的最后一个块 这是我在主类中渲染块的地方: glPushMatrix(); glTranslatef(0, 0, -10); Brick.bind(); glBegin(GL_QUADS); Block b; for(int i = 0; i < blocks.size(); i++) { b = blocks.get(i);
glPushMatrix();
glTranslatef(0, 0, -10);
Brick.bind();
glBegin(GL_QUADS);
Block b;
for(int i = 0; i < blocks.size(); i++)
{
b = blocks.get(i);
b.render();
}
glEnd();
你之所以只看到最后一个,是因为所有的“积木”都在彼此的上面 在
块
类中,您已将x
、y
、z
、sx
、sy
、sz
变量设置为静态变量,它们不应该是静态变量
基本上,static关键字意味着,如果您在某个位置更改x
,则该值将被共享,这也将影响其他所有内容
建议一次学习所有Java关键字或至少所有基本内容,因为您可以跳转到像OpenGL一样高级的东西。之所以只看到最后一个,是因为所有的“块”都在彼此的顶部 在
块
类中,您已将x
、y
、z
、sx
、sy
、sz
变量设置为静态变量,它们不应该是静态变量
基本上,static关键字意味着,如果您在某个位置更改x
,则该值将被共享,这也将影响其他所有内容
建议学习所有Java关键字或至少一次所有基础知识,因为您可以跳转到像OpenGL这样先进的领域
public static void generateMap()
{
Block b;
for(float i = 0; i < 99; i += 3)
{
for(float r = 0; r < 99; r += 3)
{
b = new Block(i, 0f, r, 3f, 3f, 3f);
blocks.add(b);
}
}
}
import static org.lwjgl.opengl.GL11.glTexCoord2f;
import static org.lwjgl.opengl.GL11.glVertex3f;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
public class Block
{
protected static float x;
protected static float y;
protected static float z;
protected static float sx;
protected static float sy;
protected static float sz;
public Block(float x, float y, float z, float sx, float sy, float sz)
{
this.x = x;
this.y = y;
this.z = z;
this.sx = sx;
this.sy = sy;
this.sz = sz;
}
public static void render()
{
glTexCoord2f(0,0); glVertex3f(x-sx,y,z-sz);
glTexCoord2f(0,1); glVertex3f(x,y,z-sz);
glTexCoord2f(1,1); glVertex3f(x,y,z);
glTexCoord2f(1,0); glVertex3f(x-sx,y,z);
//Bottom
glTexCoord2f(0,0); glVertex3f(x-sx,y-sy,z-sz);
glTexCoord2f(0,1); glVertex3f(x,y-sx,z-sz);
glTexCoord2f(1,1); glVertex3f(x,y-sx,z);
glTexCoord2f(1,0); glVertex3f(x-sx,y-sy,z);
//Front
glTexCoord2f(0,0); glVertex3f(x,y,z);
glTexCoord2f(0,1); glVertex3f(x,y-sy,z);
glTexCoord2f(1,1); glVertex3f(x-sx,y-sy,z);
glTexCoord2f(1,0); glVertex3f(x-sx,y,z);
//Back
glTexCoord2f(0,0); glVertex3f(x,y,z-sz);
glTexCoord2f(0,1); glVertex3f(x,y-sy,z-sz);
glTexCoord2f(1,1); glVertex3f(x-sx,y-sy,z-sz);
glTexCoord2f(1,0); glVertex3f(x-sx,y,z-sz);
//Left
glTexCoord2f(0,0); glVertex3f(x-sx,y,z);
glTexCoord2f(0,1); glVertex3f(x-sx,y-sy,z);
glTexCoord2f(1,1); glVertex3f(x-sx,y-sy,z-sz);
glTexCoord2f(1,0); glVertex3f(x-sx,y,z-sz);
//Right
glTexCoord2f(0,0); glVertex3f(x,y,z);
glTexCoord2f(0,1); glVertex3f(x,y-sy,z);
glTexCoord2f(1,1); glVertex3f(x,y-sy,z-sz);
glTexCoord2f(1,0); glVertex3f(x,y,z-sz);
}
}