簡體   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