[英]What is the easiest way to draw an image in 3d space in Java with OpenGL?
我在OpenGL程序中有一面墙是这样绘制的:
public void draw() {
if(!door){
glBegin(GL_QUADS);
glVertex3f(posx, 0f, posz);
glVertex3f(posx, y, posz);
glVertex3f(posx+x, y, posz);
glVertex3f(posx+x, 0f, posz);
}
else{
glBegin(GL_QUADS);
glVertex3f(posx, 0f, posz);
glVertex3f(posx, y, posz);
glVertex3f(posx+x/3, y, posz);
glVertex3f(posx+x/3, 0, posz);
glEnd();
glBegin(GL_QUADS);
glVertex3f(posx+x/3, y, posz);
glVertex3f(posx+2*x/3, y, posz);
glVertex3f(posx+2*x/3, 3*y/4, posz);
glVertex3f(posx+x/3, 3*y/4, posz);
glEnd();
glBegin(GL_QUADS);
glVertex3f(posx+2*x/3, y, posz);
glVertex3f(posx+x, y, posz);
glVertex3f(posx+x, 0, posz);
glVertex3f(posx+2*x/3, 0, posz);
}
glEnd();
}
在墙上绘制图像的最简单方法是什么?
经过大量搜索,我终于找到了答案。 这在3d空间中有效。 我希望这可以帮助某个人!
public void drawLetterOnZYWall(Texture letter,zyWall wall) {
glBindTexture(GL_TEXTURE_2D, letter.getTextureID());
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glTexCoord2f(1, 0);
glVertex3f(wall.getPosX()+0.01f, WALL_HEIGHT, wall.getPosZ());
glTexCoord2f(0, 0);
glVertex3f(wall.getPosX()+0.01f, WALL_HEIGHT, wall.getPosZ() + wall.getWidth()/10);
glTexCoord2f(0, 1);
glVertex3f(wall.getPosX()+0.01f, (float)WALL_HEIGHT*((float)8/(float)10), wall.getPosZ() + wall.getWidth()/10);
glTexCoord2f(1, 1);
glVertex3f(wall.getPosX()+0.01f, (float)WALL_HEIGHT*((float)8/(float)10), wall.getPosZ());
glTexCoord2f(1, 0);
glVertex3f(wall.getPosX()-0.01f, WALL_HEIGHT, wall.getPosZ());
glTexCoord2f(0, 0);
glVertex3f(wall.getPosX()-0.01f, WALL_HEIGHT, wall.getPosZ() + wall.getWidth()/10);
glTexCoord2f(0, 1);
glVertex3f(wall.getPosX() - 0.01f, (float)WALL_HEIGHT*((float)8/(float)10), wall.getPosZ() + wall.getWidth()/10);
glTexCoord2f(1, 1);
glVertex3f(wall.getPosX()-0.01f, (float)WALL_HEIGHT*((float)8/(float)10), wall.getPosZ());
glEnd();
glDisable(GL_TEXTURE_2D);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.