# Komischer Fehler in LWJGL



## Vancold (1. Nov 2012)

Hey!


Ich habe meine alten Projekte gelöscht, hab die Libraries von LWJGL in einen neuen Ordner getan (d.h die Jars und die natives) hab sie dann neu importiert in Netbeans.

Gut jetzt habe ich ein neues Projekt erstellt, die Libraries hinzugefügt (in der Runconfig -DJava verwendet; also den Befehl damit ich die natives finde).

Alles schön und gut. Nur seid ich das gemacht hab gibt mir das ganze einen Fehler bei folgendem Code aus


```
try {

     Display.setDisplayMode(new DisplayMode(width,height));
     Display.create();

} catch(LWJGLException ex) {

     ex.printStackTrace();
     System.exit(0);
}
```

org.lwjgl.LWJGLException: Pixel format not accelerated
	at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
	at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52)
	at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:228)
	at org.lwjgl.opengl.Display.createWindow(Display.java:303)
	at org.lwjgl.opengl.Display.create(Display.java:845)
	at org.lwjgl.opengl.Display.create(Display.java:754)
	at org.lwjgl.opengl.Display.create(Display.java:736)
	at Main.PongMain.initDisplay(PongMain.java:40)
	at Main.PongMain.start(PongMain.java:18)
	at Main.PongMain.main(PongMain.java:67)

Und diese Zeile 40 ist mein create();

Komisch. Es funktioniert sonst auch immer. Der Pfad in DJava ist absolut und mit "". Die Jars sind alle importiert und hinzugefügt zum Projekt. KEINE Ahnung warum es nicht mehr geht.


Lustiger weise hatte ich den vorher nie und da hab ich schon Spiele programmiert gehabt die funktioniert haben mit dem selben Code.


lg

Rene

PS:Width und Height sind int Variablen. Das hat bis jetzt nie Probleme gemacht.


----------



## Vancold (3. Nov 2012)

Hey!

Hat den keiner eine Ahnung warum der Fehler jetzt auftaucht? Wenn nicht installier ich die IDE neu und lads mir neu runter. Mal sehen was dann passiert 


lg

Rene


----------



## Guest2 (3. Nov 2012)

Moin,

ich habe von Netbeans keine Ahnung, aber um sicherzugehen: Den Parameter hast Du vollständig angegeben? (-Djava.library.path= ...)

Ansonsten habe ich so einen Fehler schon mal gesehen, wenn die Version der LWJGL-JARs und der LWJGL-Natives nicht übereinstimmt. Hast Du vielleicht noch irgendwo eine alte Version der Natives die vorher geladen wird? Mansche kopieren die schon mal irgendwo ins Windowsverzeichnis und wundern sich später, warum es mit einer neuen LWJGL-Version nicht mehr geht. (Irgendwelche LWJGL-Natives werden gefunden, sonnst wäre die Fehlermeldung eine andere.)

Viele Grüße,
Fancy


----------



## Vancold (3. Nov 2012)

Hey!

Nö ich hab die eine Version zentral gelagert und ja den Path hab vollständig angegeben sogar mit "".

Ich installiers einfach neu das sollte es eh beheben 

Aber trotzdem danke für die Antwort!


lg

Rene


----------



## JCODA (3. Nov 2012)

Zufällig ein Laptop von Toshiba und dann das Modell Satelite C660 ?


----------



## Vancold (3. Nov 2012)

nö


----------



## Spacerat (3. Nov 2012)

Also ich benutze [c]new DisplayMode()[/code] eigentlich gar nicht. Ich hole mir mit [c]Display.getAvailableDisplayModes()[/c] alle möglichen Displaymodes und wähle anschliessend mit

```
DisplayMode displayMode;
		for (int i = 0; i < d.length; i++) {
			if (d[i].getWidth() == 640 && d[i].getHeight() == 480
					&& d[i].getBitsPerPixel() == 32) {
				displayMode = d[i];
				break;
			}
		}
		Display.setDisplayMode(displayMode);
```
den brauchbarsten aus.


----------



## Melfis (3. Nov 2012)

Ist nur ne Vermutung, war in dem Treiberpaket deiner Grafikkarte die Opengl-Treiber bei? Probiers mal mit einem Treiberupdate.


----------



## Vancold (3. Nov 2012)

Spacerat hat gesagt.:


> Also ich benutze [c]new DisplayMode()[/code] eigentlich gar nicht. Ich hole mir mit [c]Display.getAvailableDisplayModes()[/c] alle möglichen Displaymodes und wähle anschliessend mit
> 
> ```
> DisplayMode displayMode;
> ...



Hey!

Hab mein Problem zwar gelöst aber hey der Code ist echt nützlich. Bin noch nicht so erfahren mit lwjgl danke : )


lg

Rene


----------



## Djinndrache (4. Nov 2012)

Auch wenn das eigentliche Problem schon behoben ist, ich geb dir einfach mal meine Methode, wie ich sie bei meinem letzten Spiel verwendet habe.
Vielleicht hilft es dir ja früher oder später weiter die Kompatibilität deines Programms zu maximieren 



```
public void setDisplayMode(int width, int height, boolean fullscreen) {
		if ((Display.getDisplayMode().getWidth() == width) && (Display.getDisplayMode().getHeight() == height)
				&& (Display.isFullscreen() == fullscreen)) {
			return;
		}

		try {
			DisplayMode targetDisplayMode = null;

			if (fullscreen) {
				DisplayMode[] modes = Display.getAvailableDisplayModes();
				int freq = 0;

				for (int i = 0; i < modes.length; i++) {
					DisplayMode current = modes[i];
					System.out.println(current.toString());

					if ((current.getWidth() == width) && (current.getHeight() == height)) {
						if ((targetDisplayMode == null) || (current.getFrequency() >= freq)) {
							if ((targetDisplayMode == null) || (current.getBitsPerPixel() > targetDisplayMode.getBitsPerPixel())) {
								targetDisplayMode = current;
								freq = targetDisplayMode.getFrequency();
							}
						}

						if ((current.getBitsPerPixel() == Display.getDesktopDisplayMode().getBitsPerPixel())
								&& (current.getFrequency() == Display.getDesktopDisplayMode().getFrequency())) {
							targetDisplayMode = current;
							break;
						}
					}
				}
			} else {
				targetDisplayMode = new DisplayMode(width, height);
			}

			if (targetDisplayMode == null) {
				System.out.println("Failed to find value mode: " + width + "x" + height + " fs=" + fullscreen);
				return;
			}

			Display.setDisplayMode(targetDisplayMode);
			Display.setFullscreen(fullscreen);
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
	}
```


----------



## Vancold (5. Nov 2012)

Melfis hat gesagt.:


> Ist nur ne Vermutung, war in dem Treiberpaket deiner Grafikkarte die Opengl-Treiber bei? Probiers mal mit einem Treiberupdate.



ja wieso sollte es den vorher gehen und nachher nicht mehr obwohl meine Treiber sich nicht geändert haben ?


----------



## Vancold (5. Nov 2012)

Komischerweise nimmt er das absolut gar nicht. Dem Programm gehts gar nicht um den DisplayMode das macht das aus prinzip. Egal was ich tue es wirft immer den selben Fehler!

lg

Rene


----------



## Melfis (5. Nov 2012)

Du hast geschrieben das Problem wäre gelöst, wenn ja, wie?
Wenn nein, wie sehn den deine Randbedingungen aus?


----------



## Vancold (5. Nov 2012)

Ich habs wieder als nicht gelöst markiert -> es ist nicht gelöst. 

Der Fehler ist der selbe. Hab LWJGL neu runtergeladen neu importiert andere IDE benutzt und auch die Codeschnippsel probiert die gepostet wurden. Und die DJava Link ist der richtige!

D.h ich bin ratlos


lg

Rene


----------



## Spacerat (5. Nov 2012)

Ich erinnere mich gerade, mal ein Problem mit LWJGL und OpenAL auf Win7 64 Bit gehabt zu haben...
Das Problem war, dass die Java Natives alle korrekt installiert waren, diese aber die nötigen DLLs (OpenAL64.dll) des Systems nicht finden konnten. Ich habe deswegen die System-DLLs ins LWJGL-Verzeichnis kopiert und schon funktionierte es. Evtl. klappt das bei OpenGL ja genau so.


----------



## Vancold (5. Nov 2012)

Warum klappt es jetzt nicht mehr?

Ich hab weder updates sonst noch etwas gemacht. Das System ist das selbe. es hat ca 3 monate durchgehend funktioniert. 


lg

Rene


----------



## Melfis (6. Nov 2012)

Probier es mal mit...

-Treiber neu installieren (kann sein das ein Windows-Treiberupdate was verändert hat)
-hast du vieleicht alte Nativs mit einer neuen LWJGL version zusammen?
-testen ob es auf einem anderen System läuft

Laut diveres Foren ist es immer der treiberspezifiser OpenGL support der fehlschlägt.
Lies mal deinen Treibersupport aus:
How to Find Which OpenGL Version You’re Running  Greg Dolley’s Weblog


----------



## Vancold (6. Nov 2012)

Hey!

Das mit dem Treiber hab ich probiert hat nichts gebracht.

Nein das sind die natives die im ZIP File waren. Ich habs mir sogar neu von SourceForge geholt das Zip und es entpackt und die natives vom neu entpackten angegeben bzw verlinkt für LWJGL.

Wie meinst du testen obs auf einem anderen System läuft?


lg

Rene


----------



## Evil-Devil (6. Nov 2012)

Kannst du den/die Display Tests ausführen?
lwjgl.org - Home of the Lightweight Java Game Library

Wenn die funktionieren funktioniert zumindest dein OGL mit LWJGL noch...dann wäre einzig interessant zu wissen wie du dein Display und DisplayMode erzeugst/auswählst.


----------

