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

[OPENGL] Oddalający się prostokąt


Rekomendowane odpowiedzi

Opublikowano

Witam!

Postanowiłem napisać coś w javie (mój pierwszy program 3d) i trafiłem na dziwną rzecz. Program renderuje pewien prostokąt. Tylko, że nie wiem czemu się oddala (chyba w osi z).

Wiem, że to wina glRotatef. Jak to naprawić, żeby ten prostokąt się nie oddalał?   :)

 

Kod:

import org.lwjgl.opengl.GL11;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class Game {
	
	int x;
	int y;

	public static void main(String[] args) {
		new Game();
		System.exit(0);
	}
	
	private Game() {
		try {
			Display.setDisplayMode(new DisplayMode(800,600));
			Display.create();
			Display.setVSyncEnabled(true);
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
		GL11.glViewport(0,0,800,600);
		GL11.glEnable(GL11.GL_TEXTURE_2D);  
		GL11.glEnable(GL11.GL_DEPTH_TEST);
		GL11.glDepthFunc(GL11.GL_LESS);
		GL11.glScalef(0.5f,0.5f,0.5f);
		
		Texture texture;
        try {
        	texture = TextureLoader.getTexture("PNG", new FileInputStream(new File(System.getProperty("user.dir") + "/src/texture.png")));
			texture.bind();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		while (!Display.isCloseRequested()) {
			GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
	        GL11.glRotatef(45.0f, x, y, 0); 
	              
	        GL11.glBegin(GL11.GL_QUADS); 
	         
	        GL11.glTexCoord2f(0, 0); 
	        GL11.glVertex3f( 1.0f,-1.0f,-1.0f);
	        GL11.glTexCoord2f(0, 1);
	        GL11.glVertex3f(-1.0f,-1.0f,-1.0f);
	        GL11.glTexCoord2f(1, 1);
	        GL11.glVertex3f(-1.0f, 1.0f,-1.0f);
	        GL11.glTexCoord2f(1, 0);
	        GL11.glVertex3f( 1.0f, 1.0f,-1.0f);
	        
	        GL11.glEnd(); 

	        Display.update();
            
            x = 0;
            y = 0;
            
            if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) y = -1;
            if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) y = 1;
            if (Keyboard.isKeyDown(Keyboard.KEY_UP)) x = -1;
            if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) x = 1;
        }
        Display.destroy();
	}
}

Opublikowano

Dzięki za odpowiedź. :)

Jednak wydaje mi się, że to nie jest wina tej funkcji tylko lwjgla, bo taki sam program napisany w asemblerze działa bez zarzutu.  B) He he

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...