текстура не загружается правильно пятно Java - PullRequest
1 голос
/ 22 января 2012
Текстура

загружается некорректно, имеет линии и задом наперед.что случилось.РЕДАКТИРОВАТЬ: я отрубил некоторые нерелевантный код, так что некоторые вещи могут выглядеть странно.

package package01;


import java.io.IOException;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;


public class Graph {

    ...

public void initGraph(){

    ... 


        Texture strbutton,defbutton,vitbutton,intbutton,dexbutton,agibutton;
        try {
            strbutton = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("/res/grphbuttons/strbutton.png"));
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            strbutton.bind();
        GL11.glBegin(GL11.GL_QUADS);
            GL11.glTexCoord2f(0,0);
            GL11.glVertex2f(70,120);
            GL11.glTexCoord2f(0,1);
            GL11.glVertex2f(70,120+strbutton.getImageHeight());
            GL11.glTexCoord2f(1,1);
            GL11.glVertex2f(70+strbutton.getImageWidth(),120+strbutton.getImageHeight());
            GL11.glTexCoord2f(1,0);
            GL11.glVertex2f(70+strbutton.getImageWidth(),120);

        GL11.glEnd();
            GL11.glDisable(GL11.GL_TEXTURE_2D);
        } catch (IOException e) {
            e.printStackTrace();
        }

    ...

    }
}

Это основной класс

package package01;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class DisplayScreen {
CharCreateScreen ccs = new CharCreateScreen();


void start(){
    initGL(1000,562);

    while(!Display.isCloseRequested()){
        ccs.openccscreen();
        Display.update();


    }
    Display.destroy();
}
void initGL(int width, int height){
    try {
        Display.setDisplayMode(new DisplayMode(1000,562));
        Display.create();
        Display.setVSyncEnabled(true);
    } catch(LWJGLException e) {
        e.printStackTrace();
        System.exit(0); 
    }

    GL11.glClearColor(0.9f, 0.9f, 1.0f, 0.0f);


    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glLoadIdentity();
    GL11.glOrtho(-500, 500, -281, 281, -1, 1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
}


public static void main(String[] args){

    DisplayScreen ds = new DisplayScreen();
    ds.start();

}
}

Я продолжаю сталкиваться с проблемами с загрузкой текстуры в пятно, чтопроблема на этот раз?Разве я не могу просто загрузить изображение и выложить его на экран, не применяя этот странный метод к текстурам?Я использую только slick, чтобы иметь возможность загружать несколько изображений для использования в качестве кнопок, есть более простой способ.

Вот что выходит.http://i.imgur.com/t7yvz.png Кнопка помечена как STR или, по крайней мере, так и должно быть.И что это за строки сверху и справа?!

Ответы [ 2 ]

1 голос
/ 26 декабря 2013

Убедитесь, что размеры текстур, как ширина, так и высота, так сказать 2 ^ x, например, 64x32, 16x16, 512x1024 ... (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 65536, ....)

ПРИМЕЧАНИЕ. Файл текстуры должен иметь эти размеры, однако вы можете отобразить его в любом размере

1 голос
/ 22 февраля 2012

Попробуйте изменить его на

GL11.glTexCoord2f(0,0);
GL11.glTexCoord2f(1,0);
GL11.glTexCoord2f(1,1);
GL11.glTexCoord2f(0,1);

С

GL11.glTexCoord2f(0,0);
GL11.glTexCoord2f(0,1);
GL11.glTexCoord2f(1,1);
GL11.glTexCoord2f(1,0);

Хотя ваш код не очень хорошо выглядел.

...