Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Poblem z teksturą


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

mam taki kod:

 

 

 package drexonpl.bitcraft.main;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.LWJGLException;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;

import static org.lwjgl.opengl.GL11.*;

public class Main {
    static Texture background, btn1;
    
    private static Texture loadTexture(String key) {
        try {
            return TextureLoader.getTexture("PNG", new FileInputStream(
                    new File("res/images/" + key + ".png")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        try {
            Display.setDisplayMode(new DisplayMode(640, 480));
            Display.setTitle("asdasd");
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
            Display.destroy();
            System.exit(1);
        }
        
        background = loadTexture("image");
        btn1 = loadTexture("button(1)");

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, 640, 480, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);

        while (!Display.isCloseRequested()) {
            background.bind();
            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
            glVertex2f(0, 0);
            glTexCoord2f(1, 0);
            glVertex2f(685, 0);
            glTexCoord2f(1, 1);
            glVertex2f(685, 920);
            glTexCoord2f(0, 1);
            glVertex2f(0, 920);
            glEnd();
            
            btn1.bind();
            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
            glVertex2f(0, 0);
            glTexCoord2f(1, 0);
            glVertex2f(90, 0);
            glTexCoord2f(1, 1);
            glVertex2f(90, 51);
            glTexCoord2f(0, 1);
            glVertex2f(0, 51);
            glEnd();

            Display.update();
            Display.sync(60);
        }
        Display.destroy();
        System.exit(0);
    }
}

 

 

 

a błąd jest mianowicie taki, że są kreski, ale tylko na przycisku.

 

565601405457177773370.jpg

 

A i jeszcze, jak są jakieś błędy w kodzie to piszcie :D

Opublikowano

Sprawdź PNG'ka czy też ma takie kreski.. Zmień alfę na jakiś fajny kolor (np. magenta) i będziesz widział.

nie niema kresek bo to już chyba z 50 przycisk

Opublikowano

na kwadratowym działa :( ... jak na złość

 

Spróbuj, aby wielkość była potęgą 2. Zrób kwadratowy przycisk na próbę i daj znać czy coś to da.

Opublikowano

A spróbuj zrobić 256x128 (ew. coś mniejszego), jeśli problem leży w tej potędze dwójki to też powinno działać.

ale przycisk czy w kodzie zmienić ?

Opublikowano

I tu i tu.

 

#Edit

 

W te cholerne Vertex'y się nie zgłębiałem, a wiem, że powinienem, ale łopatologicznie:

            glTexCoord2f(0, 0);
            glVertex2f(0, 0);
            glTexCoord2f(1, 0);
            glVertex2f(90, 0);
            glTexCoord2f(1, 1);
            glVertex2f(90, 51);
            glTexCoord2f(0, 1);
            glVertex2f(0, 51);

Obrazek miałeś 90x51 (szer, dł), więc analogicznie zamień z nowymi rozmiarami.

No i tak mi się wydaje, że jeśli to są funkcje 2f (punkt float) to wszystkie jednostki powinny być (może nie powinny, ale pewnie fajnie by było z perspektywy kogoś kto dba o składnie) zakończone f'em (1f, 128f, ...),

więc też powinieneś to zamienić.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...