替换我的世界主菜单的背景

时间:2012-05-13 15:48:48

标签: java opengl lwjgl minecraft

我已经得到了我的代码,主要是使用我发现用四边形绘制的代码,但它似乎只占用了我的图像的Minecraft屏幕的左下角,它应该占用整个东西。 我想我需要一些方法来扩展它,但我不知道为什么我需要它或如果我... 做绘图的代码是正确的,只是它没有在正确的位置绘制......我不知道为什么。

private void drawImageQuad(int textureHandle, int x, int y, float w, float h) {
    // activate the specified texture
    GL11.glBindTexture(GL11.GL_TEXTURE_2D,textureHandle);
    // prepare to render in 2D
    setOrthoOn();
    // draw the image textured onto a quad
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0f, 0f);
    GL11.glVertex3f( (float)x, (float)y, (float)0);
    GL11.glTexCoord2f(1f, 0f);
    GL11.glVertex3f( (float)x+w, (float)y, (float)0);
    GL11.glTexCoord2f(1f, 1f);
    GL11.glVertex3f( (float)x+w, (float)y+h, (float)0);
    GL11.glTexCoord2f(0f, 1f);
    GL11.glVertex3f( (float)x, (float)y+h, (float)0);
    GL11.glEnd();
    // restore the previous perspective and model views
    setOrthoOff();
}


private void setOrthoOn()
{
    // prepare to render in 2D
    if(GL11.glIsEnabled(GL11.GL_DEPTH_TEST)){
        depthTest=true;
        GL11.glDisable(GL11.GL_DEPTH_TEST);
    }

    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPushMatrix();                            // preserve perspective view
    GL11.glLoadIdentity();                          // clear the perspective matrix
    GL11.glOrtho(0,width,0,height,-1,1);  // turn on 2D
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPushMatrix();     // Preserve the Modelview Matrix
    GL11.glLoadIdentity();   // clear the Modelview Matrix
}

private void setOrthoOff()
{
    // restore the original positions and views
    if(depthTest){
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        depthTest = false;
    }
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPopMatrix();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPopMatrix();
}

/**
 * Draws the screen and all the components in it.
 */
public void drawScreen(int par1, int par2, float par3)
{
    //renderSkybox(par1, par2, par3);
    Tessellator tessellator = Tessellator.instance;
    double zoom = width/(double)384;
    int widthOffset = (int)((width - (384*zoom))/2);
    int widthOffset2 = widthOffset +(width*(384/256));
    this.drawImageQuad(mc.renderEngine.getTexture("/title/background0.png"),widthOffset,(height - (int)(256*zoom))/2,widthOffset+(int)(256*zoom),height+((height - (int)(256*zoom))/2));
    this.drawImageQuad(mc.renderEngine.getTexture("/title/background1.png"),widthOffset2,(height - (int)(256*zoom))/2,widthOffset2+(int)(256*zoom),height+((height - (int)(256*zoom))/2));

0 个答案:

没有答案