繁体   English   中英

使用OpenGL在Java 3d空间中绘制图像的最简单方法是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM