LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac

TKPROG

Mitglied
Guten Tag an alle Entwickler!

In der letzten Woche habe ich ein großes Problem bekommen. Immer wenn ich mein Spiel aus eclipse auf meinem iMac (Mac OS X 10.7.3, 16 GB 1333 MHz DDR3, 3.1 GHz Intel Core i5, AMD Radeon HD 6970M 1024 MB, Mitte 2011) gestartet habe, hat das Spiel nicht richtig funktioniert. Ich habe ein Video von diesem Problem gemacht: Problem with LWJGL - YouTube

Seht ihr den Spielbildschirm? Er ist schwarz, aber er sollte aber wie das Bild im Anhang aussehen...

Nachdem ich das gesehen habe, habe ich eines meiner anderen Projekte, welche ich zuvor auch mit LWJGL gemacht habe, getestet und das hat funktioniert.
Dnach habe ich an einen meiner Freunde geschickt, welcher denselben iMac hat und dort hat es auch nicht funktioniert.

Dadurch denke ich, dass ich das Spiel falsch starte, aber auf meinem Netbook (DELL Latitude 2110, 2 GB RAM, 1,83 GHz Mono Intel Atom) funktioniert es jeden Tag.

Ich habe jeden Tag nach dem Fehler gegoogled, aber da waren nur Probleme über Minecraft und über andere Sachen, die ich nicht brauche.

Nun meine "Frage": Was soll ich machen? Was braucht ihr um mir zu helfen? Code, oder andere Informationen(Der Code umfasst bis zu 20 Dokumente mit je bis zu über 200 Zeilen)? Bitte helft mir!

Danke, dass ihr das lest und vielleicht sogar antwortet.

Euer TKPROG

PS.: Das Spiel wir kostenlos zum Download angeboten werden, doch zur Zeit ist es noch in der dev Phase ^^ MeusDorfus II
 

Anhänge

  • startupscreen.png
    startupscreen.png
    40,2 KB · Aufrufe: 32

Fu3L

Top Contributor
Sind die Treiber den aktuell? Das ist eines der häufigsten Probleme warum aufm Mac was nicht läuft^^ Außerdem müsste LWJGL in solchen Fällen eigentlich Exceptions schmeißen.
 

TKPROG

Mitglied
Danke für die schnelle und nette Antwort :D

Gut, ich habe gesehen, dass es da ein Update gibt, und ich werde es gleich installieren.

Und LWJGL wirft keine Exceptions:
Code:
Sun May 27 17:07:20 CEST 2012 INFO:Slick Build #229
Sun May 27 17:07:20 CEST 2012 INFO:LWJGL Version: 2.8.3
Sun May 27 17:07:20 CEST 2012 INFO:OriginalDisplayMode: 2560 x 1440 x 32 @0Hz
Sun May 27 17:07:20 CEST 2012 INFO:TargetDisplayMode: 640 x 480 x 0 @0Hz
Sun May 27 17:07:21 CEST 2012 INFO:Starting display 640x480
Sun May 27 17:07:21 CEST 2012 INFO:Use Java PNG Loader = true
Sun May 27 17:07:21 CEST 2012 INFO:Controllers not available
Sun May 27 17:07:21 CEST 2012 INFO:Initialising sounds..
Sun May 27 17:07:21 CEST 2012 INFO:- Sound works
Sun May 27 17:07:21 CEST 2012 INFO:- 64 OpenAL source available
Sun May 27 17:07:21 CEST 2012 INFO:- Sounds source generated

Könnte es vllt auch an der von mir benutzten 2D Java Game Library Slick liegen?

Sofern es hilfreich ist, meine main-Klasse:
Code:
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import javax.swing.JOptionPane;

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.Color;
import org.newdawn.slick.Font;
import org.newdawn.slick.Game;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.openal.Audio;
import org.newdawn.slick.openal.AudioLoader;


public class MeusDorfusIIv6 implements Game{
	public static Font font = null;
	public static GUI TheGUI;
//	public static Audio TheAudio1;
	public static GameContainer container;
	public static MeusDorfus CURRENT;
//	public static Audio TheAudio2;
	public static GUI_DIALOG dialog1 = null;
	public static DisplayMode fullscreen = null;
	public static DisplayMode nonfullscreen = null;
	public static boolean soundallowed = true;

	public MeusDorfusIIv6() {
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
			/*String[] languages = {"English", "Deutsch"};
			int result = JOptionPane.showOptionDialog(null, "Chose your language:", "Meus Dorfus II: Language...", 0, JOptionPane.QUESTION_MESSAGE, null, languages, languages[0]);
			if(result == JOptionPane.CLOSED_OPTION){
				JOptionPane.showMessageDialog(null, "The game is going to use English as the language.");
				Language.CURRENTLANGUAGE = Language.LANGUAGE_ENGLISH;
			}
			else{
				Language.CURRENTLANGUAGE = result;
			}
			*/
			MeusDorfusIIv6 m = new MeusDorfusIIv6();
			STARTUP.THIS = new STARTUP(m.new STARTUPOKActionListener());
			STARTUP.THIS.setVisible(true);
	}
	public class STARTUPOKActionListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			STARTUP.THIS.setVisible(false);
			MeusDorfusIIv6.soundallowed = STARTUP.THIS.checkbox1.isSelected();
			if(STARTUP.THIS.combobox1.getSelectedIndex() == 0){
				Language.CURRENTLANGUAGE = Language.LANGUAGE_ENGLISH;
			}
			else if(STARTUP.THIS.combobox1.getSelectedIndex() == 1){
				Language.CURRENTLANGUAGE = Language.LANGUAGE_GERMAN;
			}
			else{
				Language.CURRENTLANGUAGE = Language.LANGUAGE_ENGLISH;
			}
			/*if(System.getProperty("os.name").contains("Mac")){
				MeusDorfusIIv6.macosxtest();
				return;
			}*/
			try{
				AppGameContainer app = new AppGameContainer(new MeusDorfusIIv6(), 900, 500, false);
				DisplayMode[] modes = null;
				try {
					modes = Display.getAvailableDisplayModes();
				} catch (Exception e) {
					e.printStackTrace();
					modes =null;
				}
				if(modes != null){
					MeusDorfusIIv6.nonfullscreen = modes[STARTUP.THIS.combobox2.getSelectedIndex()+1];
					MeusDorfusIIv6.fullscreen = modes[STARTUP.THIS.combobox2.getSelectedIndex()+1];
					app.setDisplayMode(modes[STARTUP.THIS.combobox2.getSelectedIndex()+1].getWidth(), modes[STARTUP.THIS.combobox2.getSelectedIndex()+1].getHeight(), STARTUP.THIS.checkbox2.isSelected());
					app.start();
				}
				else{
					MeusDorfusIIv6.fullscreen = null;
					MeusDorfusIIv6.nonfullscreen = null;
					try {
						modes = Display.getAvailableDisplayModes();
						
						int b = 0;
						int c = 0;
						
						int d = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50);
						int e = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-100);
						for(int a = 0;a < modes.length;a++){
							if(modes[a].getHeight() > c){
								if(modes[a].getWidth() < d && modes[a].getHeight() < e){
									c = modes[a].getHeight();
									b = a;
								}
							}
						}
						app.setDisplayMode(modes[b].getWidth(), modes[b].getHeight(), STARTUP.THIS.checkbox2.isSelected());
					} catch (LWJGLException e1) {
						e1.printStackTrace();
					}
				}
			}
			catch(Exception e){
				e.printStackTrace();
				Sys.alert("", "ERROR: " + e.getLocalizedMessage());
			}
		}
		
	}

	@Override
	public void init(GameContainer container) throws SlickException {
		try{
			container.setIcon(ImageLoader.icon);
//			File f = new File("snd/P002_Menue.wav");
//			MeusDorfusIIv6.TheAudio1 = AudioLoader.getAudio("WAV", new FileInputStream(f));
//			MeusDorfusIIv6.TheAudio2 = AudioLoader.getAudio("WAV", new FileInputStream(new File("snd/S005_Extreme_Chilling_loopable.wav")));
			MeusDorfusIIv6.initGUI(GUISplash.THIS);
			container.setMusicOn(soundallowed);
			container.setShowFPS(false);
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public void update(GameContainer container, int delta) throws SlickException {
		MeusDorfusIIv6.container = container;
		if(container.getInput().isKeyPressed(Input.KEY_F11)){
			if(container.isFullscreen()){
				if(MeusDorfusIIv6.nonfullscreen != null){
					AppGameContainer app = (AppGameContainer) container;
					app.setDisplayMode(MeusDorfusIIv6.nonfullscreen.getWidth(), MeusDorfusIIv6.nonfullscreen.getHeight(), false);
				}
				else{
					AppGameContainer app = (AppGameContainer) container;
					try {
						DisplayMode[] modes = Display.getAvailableDisplayModes();
						
						int b = 0;
						int c = 0;
						
						int d = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50);
						int e = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-100);
						for(int a = 0;a < modes.length;a++){
							if(modes[a].getHeight() > c){
								if(modes[a].getWidth() < d && modes[a].getHeight() < e){
									c = modes[a].getHeight();
									b = a;
								}
							}
						}
						app.setDisplayMode(modes[b].getWidth(), modes[b].getHeight(), false);
					} catch (LWJGLException e1) {
						e1.printStackTrace();
					}
				}
			}
			else{
				if(MeusDorfusIIv6.fullscreen != null){
					AppGameContainer app = (AppGameContainer) container;
					app.setDisplayMode(MeusDorfusIIv6.fullscreen.getWidth(), MeusDorfusIIv6.fullscreen.getHeight(), true);
				}
				else{
					AppGameContainer app = (AppGameContainer) container;
					try {
						DisplayMode[] modes = Display.getAvailableDisplayModes();
						
						int b = 0;
						int c = 0;
						
						int d = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50);
						int e = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-100);
						for(int a = 0;a < modes.length;a++){
							if(modes[a].getHeight() > c){
								if(modes[a].getWidth() < d && modes[a].getHeight() < e){
									c = modes[a].getHeight();
									b = a;
								}
							}
						}
						app.setDisplayMode(modes[b].getWidth(), modes[b].getHeight(), true);
					} catch (LWJGLException e1) {
						e1.printStackTrace();
					}
				}
			}
		}
		
		if(container.getInput().isKeyPressed(Input.KEY_F3)){
			if(container.isShowingFPS()){
				container.setShowFPS(false);
			}
			else{
				container.setShowFPS(true);
			}
		}
		if(MeusDorfusIIv6.TheGUI instanceof GUINormalHouseView || MeusDorfusIIv6.TheGUI instanceof GUIDorfuebersicht || MeusDorfusIIv6.TheGUI instanceof GUIOverview){
			if(MeusDorfusIIv6.CURRENT != null){
				MeusDorfusIIv6.CURRENT.update();
			}
		}
		if(MeusDorfusIIv6.dialog1 != null){
			MeusDorfusIIv6.dialog1.update(container, delta);
		}
		else{
			MeusDorfusIIv6.TheGUI.update(container, delta);
		}
	}

	@Override
	public void render(GameContainer container, Graphics g)
			throws SlickException {
		MeusDorfusIIv6.font = g.getFont();
		g.setColor(Color.black);
		if(MeusDorfusIIv6.dialog1 != null){
			MeusDorfusIIv6.dialog1.render(container, g);
		}
		else{
			try{
				MeusDorfusIIv6.TheGUI.render(container, g);
				}
				catch(Exception e){
					e.printStackTrace();
				}
		}
	}

	@Override
	public boolean closeRequested() {
		GUIDialog.THIS.realInit(Language.getString(Language.CloseRequestText), Language.getString(Language.CloseRequestTitle), new closeRequestDialogAnswer(), MeusDorfusIIv6.TheGUI, GUIDialog.OPTION_YES_NO);
		MeusDorfusIIv6.dialog1 = GUIDialog.THIS;
		return false;
	}
	
	public class closeRequestDialogAnswer implements DialogAnswer{

		@Override
		public void answer(int answer) {
			if(answer == GUIDialog.OPTION_YES){
				System.exit(0);
			}
		}
		
	}

	@Override
	public String getTitle() {
		return "Meus Dorfus II";
	}
	
	public static void cannotInit(){
		Sys.alert("", Language.getString(Language.CanntoInit));
	}
	public static void drawStackedBG1(GameContainer container, Graphics g){
		int widthOfBG = ImageLoader.getImage(ImageLoader.bg1).getWidth();
		int heightOfBG = ImageLoader.getImage(ImageLoader.bg1).getHeight();
		int tileWidth = 100;
		int tileHeight = 100;
		for(int a = 0;a < ((container.getWidth()/tileWidth)+1);a++){
			for(int b = 0;b < ((container.getHeight()/tileHeight)+1);b++){
				g.drawImage(ImageLoader.getImage(ImageLoader.bg1), 
						tileWidth*a, tileHeight*b, 
						(tileWidth*a)+tileWidth, (tileHeight*b)+tileHeight, 
						0,
						0,
						widthOfBG,
						heightOfBG
						);
			}
		}
	}
	public static void initGUI(GUI tHIS){
		MeusDorfusIIv6.TheGUI = tHIS;
		if(MeusDorfusIIv6.TheGUI.inited == false){
			try {
				MeusDorfusIIv6.TheGUI.init(MeusDorfusIIv6.container);
				MeusDorfusIIv6.TheGUI.inited = true;
			} catch (SlickException e) {
				e.printStackTrace();
				MeusDorfusIIv6.cannotInit();
			}
		}
	}
	
	public static void macosxtest(){
		try { 
			AppGameContainer app = new AppGameContainer(new MeusDorfusIIv6(), 900, 500, false);
			try {
				DisplayMode[] modes = Display.getAvailableDisplayModes();
				double width = (double)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
				double height = (double)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
				double width_height = width/height;
				for(int a = 0;a < modes.length;a++){
					try{
						double modes_a_width_height = (double)modes[a].getWidth()/(double)modes[a].getHeight();
						if(/*width_height == modes_a_width_height && */(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50)>modes[a].getWidth() && (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-50)>modes[a].getHeight()){
							app.setDisplayMode(modes[a].getWidth(), modes[a].getHeight(), false);
							System.out.println("Das Programm bevorzugt den " + (a+1) + ". Modus, denn dort betr‰gt die Weite " + modes[a].getWidth() + " und die Hˆhe " + modes[a].getHeight());
							break;
						}
						if((a+1) == modes.length){
							System.out.println("Das Programm mag keinen der Modi...");
						}
					}
					catch(Exception e2){
					}
				}
			} catch (LWJGLException e1) {
				e1.printStackTrace();
			}
			app.start(); 
		} 
		catch (Exception e) { 
			e.printStackTrace();
			Sys.alert("ERROR:", e.getMessage());
			System.exit(-1);
		} 
		
	}
	
	/**
	 * Gibt den x-Wert wieder, den man braucht um zum Beispiel den ScheiflButton in die Mitte zu bekommen.
	 * M¸sste auch mit y-Wert und Hˆhe funken ^^
	 * @param bigwidth Z.B. container.getWidth()
	 * @param smallwidth z.B. button.getWidth()
	 * @return z.B. x vom Button, damit er in der mitte ist
	 */
	public static double getMiddel(float bigwidth, float smallwidth) {
		return (((double)bigwidth/(double)2)-((double)smallwidth/(double)2));
	}

}
 

Evil-Devil

Top Contributor
Sun May 27 17:07:20 CEST 2012 INFO:OriginalDisplayMode: 2560 x 1440 x 32 @0Hz
Sun May 27 17:07:20 CEST 2012 INFO:TargetDisplayMode: 640 x 480 x 0 @0Hz
Habe hier zwar keinen Mac hier um es zu testen. Aber 0Hz Wiederholfrequenz erscheint mir seltsam. Auf den Windows/Linux Systemen sollte im Log eine Hz Zahl größer 0 stehen.

Es könnte sein, dass LWJGL die möglichen Bildwiederholfrequenzen des Monitors/der Grafikkarte nicht ermitteln kann.
Ansonsten probiere mal die DisplayTest Demo aus.
lwjgl.org - Home of the Lightweight Java Game Library

Die probiert die ersten 5 ermittelten DisplayModes aus und schmeißt dir entsprechende Infos.
Für SLICK wird es denke ich auch einen passenden Test geben bzw. der wird sich einfach selbst schreiben lassen.

Schließlich setzt SLICK auf LWJGL auf.
 

TKPROG

Mitglied
Ich habe nun folgendes Resultat bekommen, nachdem ich den Quellcode des Tests in eclipse mit lwjgl und den macosx-natives durchlaufen gelassen habe:

Code:
==== Test Current ====
Info about current:
Graphics card: null, version: null
Resolution: 2560x1440x32@0Hz
---- Test Current ----
==== Test query ====
Retrieving available displaymodes
Found 24 modes
The first 5 are:
1280 x 720 x 32 @0Hz
640 x 480 x 16 @0Hz
1600 x 900 x 16 @0Hz
1344 x 756 x 32 @0Hz
1280 x 1024 x 16 @0Hz
1680 x 1050 x 32 @0Hz
---- Test query ----
==== Test setDisplayMode ====
Retrieving available displaymodes
Looking for 640x480...found!
Changing to mode...done
Resolution: 640x480x16@0Hz
Resetting mode...done
---- Test setDisplayMode ----
==== Test setDisplayConfigurationTest ====
Testing normal setting
Configuration changed, gamma = 1.0 brightness = 0.0 contrast = 1.0
Testing gamma settings
Configuration changed, gamma = 5.0 brightness = 0.0 contrast = 1.0
Configuration changed, gamma = 0.5 brightness = 0.0 contrast = 1.0
Testing brightness settings
Configuration changed, gamma = 1.0 brightness = -1.0 contrast = 1.0
Configuration changed, gamma = 1.0 brightness = -0.5 contrast = 1.0
Configuration changed, gamma = 1.0 brightness = 0.5 contrast = 1.0
Configuration changed, gamma = 1.0 brightness = 1.0 contrast = 1.0
Testing contrast settings
Configuration changed, gamma = 1.0 brightness = 0.0 contrast = 0.0
Configuration changed, gamma = 1.0 brightness = 0.0 contrast = 0.5
Configuration changed, gamma = 1.0 brightness = 0.0 contrast = 10000.0
resetting...done
---- Test setDisplayConfigurationTest ----

Das Interessante ist, dass ein Spiel, welches ich früher angefangen habe, mit folgendem Modus funktioniert:
Code:
Using now 1280x720@0 Hz with 32 bits/pixel
Und ich nutze folgende Funktion um den "richtigen" Modus zu finden.
Java:
		try { 
			AppGameContainer app = new AppGameContainer(new WarOfPast1x(), 900, 500, false);
			try {
				DisplayMode[] modes = Display.getAvailableDisplayModes();
				double width = (double)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
				double height = (double)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
				double width_height = width/height;
				for(int a = 0;a < modes.length;a++){
					try{
						double modes_a_width_height = (double)modes[a].getWidth()/(double)modes[a].getHeight();
						if(/*width_height == modes_a_width_height && */(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50)>modes[a].getWidth() && (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-50)>modes[a].getHeight()){
							app.setDisplayMode(modes[a].getWidth(), modes[a].getHeight(), false);
							System.out.println("Das Programm bevorzugt den " + (a+1) + ". Modus, denn dort betr‰gt die Weite " + modes[a].getWidth() + " und die Hˆhe " + modes[a].getHeight());
							System.out.println("Using now " + modes[a].getWidth() + "x" + modes[a].getHeight() + "@" + modes[a].getFrequency() + " Hz with " + modes[a].getBitsPerPixel() + " bits/pixel");
							break;
						}
						if((a+1) == modes.length){
							System.out.println("Das Programm mag keinen der Modi...");
						}
					}
					catch(Exception e2){
					}
				}
			} catch (LWJGLException e1) {
				e1.printStackTrace();
			}
			app.start(); 
		} 
		catch (Exception e) { 
			e.printStackTrace();
			Sys.alert("ERROR:", e.getMessage());
			System.exit(-1);
		}
Das finde ich ziemlich verwirrend...

(Wartet mal kurz ;D Ich teste nämlich alles gerade WÄHREND ich diesen Beitrag schreibe)

HEY ES FUNKTIONIERT :D

Ich habe die Funktion in mein derzeitiges Spiel implementiert und es klappt ^^

(main Methode)
Java:
	/**
	 * @param args
	 */
	public static void main(String[] args) {
			if(System.getProperty("os.name").contains("Mac")){
				MeusDorfusIIv6.macstartup();
			}
			else{
				MeusDorfusIIv6 m = new MeusDorfusIIv6();
				STARTUP.THIS = new STARTUP(m.new STARTUPOKActionListener());
				STARTUP.THIS.setVisible(true);
			}
	}
die macstartup Methode:
Java:
	public static void macstartup(){
		try { 
			AppGameContainer app = new AppGameContainer(new MeusDorfusIIv6(), 900, 500, false);
			try {
				DisplayMode[] modes = Display.getAvailableDisplayModes();
				double width = (double)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
				double height = (double)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
				double width_height = width/height;
				for(int a = 0;a < modes.length;a++){
					try{
						double modes_a_width_height = (double)modes[a].getWidth()/(double)modes[a].getHeight();
						if(/*width_height == modes_a_width_height && */(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50)>modes[a].getWidth() && (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-50)>modes[a].getHeight()){
							app.setDisplayMode(modes[a].getWidth(), modes[a].getHeight(), false);
							System.out.println("Das Programm bevorzugt den " + (a+1) + ". Modus, denn dort betr‰gt die Weite " + modes[a].getWidth() + " und die Hˆhe " + modes[a].getHeight());
							System.out.println("Using now " + modes[a].getWidth() + "x" + modes[a].getHeight() + "@" + modes[a].getFrequency() + " Hz with " + modes[a].getBitsPerPixel() + " bits/pixel");
							break;
						}
						if((a+1) == modes.length){
							System.out.println("Das Programm mag keinen der Modi...");
						}
					}
					catch(Exception e2){
					}
				}
			} catch (LWJGLException e1) {
				e1.printStackTrace();
			}
			app.start(); 
		} 
		catch (Exception e) { 
			e.printStackTrace();
			Sys.alert("ERROR:", e.getMessage());
			System.exit(-1);
		} 
	}

Jetzt bin ich vorerst glücklich, aber dennoch wäre es interessant zu wissen, weshalb es bisher mit der andere Methode nicht ging.
Denn ich würde gerne meinen "Start-Manager" nutzen...

Vielen Dank für euer Interesse :toll:

PS.: Wisst ihr vllt weswegen das Fehler geschmissen hat?
 

Evil-Devil

Top Contributor
Hat denn mit dem durchlaufen der Tests irgendein DisplayMode funktioniert oder sind die alle failed? Könnte sonst ja sein, dass der Mac das init mit der Desktop Auflösung schafft und dann erst die Auflösung wechseln kann...Mac...mehr als ausprobieren wird da schätze ich nicht drin sein.

Toolkit ist das Toolkit aus AWT oder?
 

TKPROG

Mitglied
Soweit ich es bemerkt habe, hat jeder DisplayMode funktioniert ;D.
Es lag ja, wie ich bereits vorher geschrieben hatte irgendwie am Projekt...
Nun nutze ich eine von mir vorher genutzte Intialisierung und sie klappt wenigstens.

Und ja, das Toolkit ist aus AWT. ;D
Java:
import java.awt.Toolkit;

PS.: Danke, dass Ihr so ein Interesse an meinem Problem zeigt. ^^ Ich habe das nämlich auch in dem englischsprachigen LWJGL-Forum gepostet und habe noch keine Antwort erhalten. Zumindest nicht als E-Mail... ;D
 

Evil-Devil

Top Contributor
Hab mal in die SLICK Doku geschaut...an sich ist das Problem echt simpel...

AppGameContainer erwartet ja dein Game, die Fenster Größe und ob es Vollbild ist.
Du hast oben 900x500 als Fenstergröße eingegeben. Das funktioniert afaik in LWJGL nicht sondern nur die von DisplayMode zurückgelieferten Werte. Für solch komischen Bildverhältnisse kann man das Canvas nutzen.

Wie soll man 900x500 auf ner 800*600 Auflösung nutzen oder nem kleinen Laptop? ^^
 

TKPROG

Mitglied
Ok, ich werde das mal ändern ;D
Aber eigentlich mache ich ja hier die Änderung in einen der zur Verfügung stehenden DisplayModi...
[JAVA=12] app.setDisplayMode(modes[a].getWidth(), modes[a].getHeight(), false);[/code]

Trotzdem vielen Dank
Code:
:D
 

Evil-Devil

Top Contributor
Funktioniert nicht ;)

Code:
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NoSuchMethodError: org.lwjgl.LWJGLUtil.log(Ljava/lang/String;)V
        at org.newdawn.slick.openal.WaveData.create(WaveData.java:126)
        at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:713)
        at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:683)
        at org.newdawn.slick.openal.AudioLoader.getAudio(AudioLoader.java:54)
        at SoundLoader.play(SoundLoader.java:30)
        at GUISplash.init(GUISplash.java:37)
        at MeusDorfusIIv6.initGUI(MeusDorfusIIv6.java:297)
        at MeusDorfusIIv6.init(MeusDorfusIIv6.java:135)
        at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
        at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
        at MeusDorfusIIv6.macstartup(MeusDorfusIIv6.java:353)
        at MeusDorfusIIv6.main(MeusDorfusIIv6.java:46)
        ... 5 more
 

TKPROG

Mitglied
Ich werde es nacher gleich nocheinmal downloaden und auf all meinen Computern testen.

Aber welches System hast du denn?
Weil auf Mac OS X und (vielleicht (noch nicht wirklich getestet)) auf Windows ging es bei mir.
 
S

Spacerat

Gast
Kann sein, dass du dein Spiel auf Widescreen-Modis patchen musst? 640*480 ist ein 4:3 Modus.
 

TKPROG

Mitglied
Hmm, ich habe gerade eben das Spiel auf meinem iMac, meinem Parallelsdesktop Windows 7 und dem Windows Vista meiner Eltern getestet und es hat immer funktioniert, wenn man die jar einfach so geöffnet hat, aber als ich dann in der Konsole folgendes genutzt habe, hat es nicht funktioniertt und es ist genau die Fehlermeldung aufgetreten, welche du hier gepostet hast.

Code:
java -jar ...\MeusDorfusIIv6_dev_1.jar
(Die ... stehen für den restlichen Pfad)

Und wenn ich nun lwjgl hinzufügen wollte (und die anderen jars) wo sollte ich das dann hineinkopieren? In die jar oder wie die natives nebendran?

Und noch etwas: Das Spiel hat, wie ich gerade bemerkt habe, so oder so einen Bug, weswegen man sich nur im Hauptmenü aufhalten kann und sobald man ein neues Spiel machen will, die Buttons nicht angezeigt werden...

PS.: Nochmals vieen Dank für Dein/Euer Interesse. ^^
 

Evil-Devil

Top Contributor
Doppelklick aufs JAR hat bei mir auch nicht funktioniert. Das hatte ich als erstes probiert.
Da ging nur das Fenster auf und hat sich wieder geschlossen.

Hab hier ein Dual Monitor System - das sollte aber kein Problem darstellen.
 
S

Spacerat

Gast
Ich muss jetzt leider zugeben, dass ich das nicht verstehe. ;D Heißt das, dass das Spiel auf einem 16:9 Monitor nicht laufen kann? Also auf meinem iMac mit 16:9 läuft es problemlos auch im Vollbildmodus (F11).
Im Prinzip heisst das, dass bei den in Frage kommenden Geräten nur Widescreen-Modi unterstützt werden, solange nur ein einzelner Widescreen-Monitor dranhängt. Ist aber glaub' ich nur 'ne Einstellungs- bzw. Treibersache, in Windows jedenfalls.
 

pengwolf

Mitglied
Hi,

bin über den Thread gestolpert und wollte es auch mal testen. Hier meine Fehlermeldung

Code:
Hi1
Sat Jun 09 13:35:50 CEST 2012 INFO:Slick Build #229
Das Programm bevorzugt den 13. Modus, denn dort betrëgt die Weite 1280 und die
êhe 800
Using now 1280x800@75 Hz with 16 bits/pixel
Sat Jun 09 13:35:50 CEST 2012 INFO:LWJGL Version: 2.8.3
Sat Jun 09 13:35:50 CEST 2012 INFO:OriginalDisplayMode: 1680 x 1050 x 32 @60Hz
Sat Jun 09 13:35:50 CEST 2012 INFO:TargetDisplayMode: 1280 x 800 x 0 @0Hz
Sat Jun 09 13:35:51 CEST 2012 INFO:Starting display 1280x800
Sat Jun 09 13:35:51 CEST 2012 INFO:Use Java PNG Loader = true
Sat Jun 09 13:35:51 CEST 2012 INFO:Controllers not available
Sat Jun 09 13:35:51 CEST 2012 INFO:Initialising sounds..
Sat Jun 09 13:35:51 CEST 2012 INFO:- Sound works
Sat Jun 09 13:35:51 CEST 2012 INFO:- 64 OpenAL source available
Sat Jun 09 13:35:51 CEST 2012 INFO:- Sounds source generated
AL lib: FreeContext: (00000000024653A0) Deleting 64 Source(s)
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLo
der.java:58)
Caused by: java.lang.NoSuchMethodError: org.lwjgl.LWJGLUtil.log(Ljava/lang/Stri
g;)V
        at org.newdawn.slick.openal.WaveData.create(WaveData.java:126)
        at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:713)
        at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:683)
        at org.newdawn.slick.openal.AudioLoader.getAudio(AudioLoader.java:54)
        at SoundLoader.play(SoundLoader.java:30)
        at GUISplash.init(GUISplash.java:37)
        at MeusDorfusIIv6.initGUI(MeusDorfusIIv6.java:297)
        at MeusDorfusIIv6.init(MeusDorfusIIv6.java:135)
        at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
        at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
        at MeusDorfusIIv6.macstartup(MeusDorfusIIv6.java:353)
        at MeusDorfusIIv6.main(MeusDorfusIIv6.java:46)
        ... 5 more

Ich hoffe, es hilft dir weiter :)

Habe nur einen Monitor.
 
S

Spacerat

Gast
Selbe Fehlermeldung hier. Ich frage mich dabei, warum man ein Eclipse-Paket in sein Spiel einbaut. Bevor man so etwas macht, muss man sich darüber klar sein, ob dieses keine weiteren Abhängigkeiten innerhalb von Eclipse hat. Besser man implementiert solche Funktionalitäten selber.
Ach ja...
Getestet auf Windows7 64 Bit Ultimate (Dual Head) und Windows XP Pro SP3 (Single Head).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
coolian lwjgl glfw window zeigt nur grau an Spiele- und Multimedia-Programmierung 0
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
V LWJGL GUI Spiele- und Multimedia-Programmierung 1
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
C GLSL Shaderprogrammierung in LWJGL 3 Spiele- und Multimedia-Programmierung 12
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
G LWJGL .obj .mtl loader Spiele- und Multimedia-Programmierung 3
G 2D animationen LWJGL Spiele- und Multimedia-Programmierung 0
pcfreak9000 "Allgemeine" Performance verbessern (LWJGL 2) Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
G lwjgl verwendung Spiele- und Multimedia-Programmierung 6
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
E LWJGL glGenVertexArrays() erzeugt doppelte IDs Spiele- und Multimedia-Programmierung 3
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
K No Lwjgl Spiele- und Multimedia-Programmierung 2
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
T [LWJGL] Textur / File wieder freigeben Spiele- und Multimedia-Programmierung 4
F [LWJGL] Skeletal Animation 3D Spiele- und Multimedia-Programmierung 1
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
RalleYTN LWJGL Vignette Spiele- und Multimedia-Programmierung 2
E LWJGL Switchen zwischen gluOrtho und gluPerspective Spiele- und Multimedia-Programmierung 0
RalleYTN LWJGL Rotation Spiele- und Multimedia-Programmierung 1
C LWJGL Color Picking Textures deaktivieren Spiele- und Multimedia-Programmierung 0
K FBO Framebuffer object [LWJGL] 2D tutorial gesucht Spiele- und Multimedia-Programmierung 2
K [LWJGL] 2D Tunneler Hintergrund Spiele- und Multimedia-Programmierung 7
S LWJGL 3d-spieleentwicklung Spiele- und Multimedia-Programmierung 3
H LWJGL-Renderfail Spiele- und Multimedia-Programmierung 1
Seikuassi LWJGL - Texturen flackern Spiele- und Multimedia-Programmierung 2
Androbin LWJGL - Kollisions-Bug (Fallen) Spiele- und Multimedia-Programmierung 14
K Schiessen in 2D (LWJGL) Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
U Kann nur ein Objekt mit LWJGL rendern Spiele- und Multimedia-Programmierung 2
X LWJGL | Parent.isDisplayable() must be true | wie kann man das zu true machen? Spiele- und Multimedia-Programmierung 0
X [LWJGL] Binden von Texturen per PNG File und Texture Sheet Spiele- und Multimedia-Programmierung 1
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
U Quadrate anklicken LWJGL Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
B LWJGL Manche Seiten werden transparent angezeigt Spiele- und Multimedia-Programmierung 2
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
U Komische fragmente bei LWJGL Spiele- und Multimedia-Programmierung 6
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Q LWJGL - Alpha-Probleme Spiele- und Multimedia-Programmierung 2
S [LWJGL] Zweimal selbe Textur trotz unterschiedlicher IDs Spiele- und Multimedia-Programmierung 3
O LWJGL AWTGLCanvas Tiefe auf 1 beschränkt Spiele- und Multimedia-Programmierung 5
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
S [lwjgl] Renderbug bei mehreren Objekten Spiele- und Multimedia-Programmierung 2
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
M LWJGL Text rendern Spiele- und Multimedia-Programmierung 3
B LWJGL Mauskoordinaten Spiele- und Multimedia-Programmierung 1
J LWJGL Update Schleife (Snake) Spiele- und Multimedia-Programmierung 6
B LWJGL Display.update() ist langsam Spiele- und Multimedia-Programmierung 5
R LWJGL: Performance glBegin, drawList, ... Spiele- und Multimedia-Programmierung 16
R LWJGL: Object Loader -> .obj, .c4d, ... laden Spiele- und Multimedia-Programmierung 3
R LWJGL: Textur -> unsichtbare Stellen, wie erzeugen? Spiele- und Multimedia-Programmierung 4
A LwJGL - Animation Stockt Spiele- und Multimedia-Programmierung 5
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
R LWJGL: 3D Picking Spiele- und Multimedia-Programmierung 4
F LWJGL: Textur ändern mit GL11.readPixels Spiele- und Multimedia-Programmierung 5
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
F LWJGL: Is undefined? Spiele- und Multimedia-Programmierung 7
F LWJGL Kamerabug Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
F LWJGL Dreidimensionaler Würfel Spiele- und Multimedia-Programmierung 15
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
P "Tiefe" in Objekten - LWJGL Spiele- und Multimedia-Programmierung 12
T LWJGL 3D Objekt Collision: Wie? Spiele- und Multimedia-Programmierung 11
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
V Komischer Fehler in LWJGL Spiele- und Multimedia-Programmierung 18
Z lwjgl oder jogl nutzen Spiele- und Multimedia-Programmierung 9
Y LWJGL Hintergrund Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] 2D Sprite Rotieren/Drehen Spiele- und Multimedia-Programmierung 6
CookieSoft LWJGL Ubuntu 12.04 Fehler Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
F lwjgl - Skysphere Spiele- und Multimedia-Programmierung 3
CookieSoft Slick und LWJGL Texture lag Spiele- und Multimedia-Programmierung 13
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
0 Grafikfehler LWJGL Spiele- und Multimedia-Programmierung 2
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
S (LWJGL) VertexBufferObjects Spiele- und Multimedia-Programmierung 20
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
H LWJGL: Fragen zum Verständnis Spiele- und Multimedia-Programmierung 7
T LWJGL Gui erstellen Spiele- und Multimedia-Programmierung 7
Kenan89 lwjgl Exception Spiele- und Multimedia-Programmierung 3
Z Anfängerfrage: Text anzeigen mit LWJGL Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben