Hm, ich habe alle 3D-Einstellungen im Control Center zurückgesetzt und wieder genau so angewendet, wie sie vorher von mir festgelegt waren.
Jetzt funktionierts o_O
Hm, ich habe alle 3D-Einstellungen im Control Center zurückgesetzt und wieder genau so angewendet, wie sie vorher von mir festgelegt waren.
Jetzt funktionierts o_O
...
Okay, vielen Dank für die Auskunft, ich hatte schon einen kleinen Schrecken.
OpenGl kann die Grafikkarte schon, (Half-Life, OpenArena,Wolfenstein, CS,Minecraft ) nur welche version weis ich nicht genau.
Name der Grka ist : Intel HD Graphics (Intel® Pentium® processor P6200 )
EDIT:
hier nocmal der code nachdem ich das eingetippt habe java -jar -Djava.library.path="/home/xxx/Programme/test" Executable.jar
Das Fenster öffnet diesmal kurz aber schließt sofort wieder.
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(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.RuntimeException: Resource not found: Resources/Graphics/System/ui.png
at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
at view.Textures.load_textures(Textures.java:36)
at misc.MainGDG.main(MainGDG.java:29)
... 5 more
Geändert von leonhart-squall (17.02.2013 um 13:09 Uhr)
Um das einmal zu übersetzen: Java kann die native OpenGL Bibliothek nicht finden.
Bei Windows scheint es auszureichen diese Dateien einfach in den selben Ordner zu packen wie die .jar, bei dir jedoch scheint er die Dateien nicht finden zu können.
Eine ganz einfache Lösung wäre es die .jar über die Kommandozeile zu starten und den Dateipfad für die nativen Bibliotheken anzugeben, aber das ist natürlich nicht sonderlich benutzerfreundlich.
Ich werde einmal schauen inwiefern ich die Manifest Datei in der .jar bearbeiten muss um diesen Schritt bereits im Vorraus zu erledigen.
Die Dateien welche du bei Linux benötigen wirst sind diejenigen welche die ".os" Endung benutzen.
Es sollte also völlig ausreichen in der Kommandozeile auf den Ordner zu zeigen in welchen du gedownloaded hast.
Vielen Dank dafür, dass du mich darauf aufmerksam gemacht hast.
Edit:
Die Meldung sagt aus, dass die Texturen welche versucht werden geladen zu werden nicht gefunden werden können.
Ich kann mir kaum vorstellen, dass Linux nicht mit der Schreibweise der Pfade zufrieden sein könnte.
Ich glaube ich muss mich ein wenig tiefer mit der Angelegenheit beschäftigen, aber vielen Dank für das ausführliche Testen.
So, ich nerv mal weiter:
Lappi mit Intel HD4000 und Nvidia 650M (mit beiden Grafikprozessoren getestet)
Das gleiche Rechteck, wie bei der Ati-Karte. Aber diesmal ist die Szene sichtbar. Das Rechteck verschwindet nach wenigen Sekunden von selbst.
Problem tritt auch bei dem Testprogramm, was nur die Blume darstellt, auf.
So, ich nerv mal weiter:
Lappi mit Intel HD4000 und Nvidia 650M (mit beiden Grafikprozessoren getestet)
Das gleiche Rechteck, wie bei der Ati-Karte. Aber diesmal ist die Szene sichtbar. Das Rechteck verschwindet nach wenigen Sekunden von selbst.
Problem tritt auch bei dem Testprogramm, was nur die Blume darstellt, auf.
...
Du scheinst ein sehr unglückliches Händchen zu haben, dieses Phänomen ist bei keinem anderen Tester aufgetaucht.
Eine Frage noch dazu: Taucht dieses Rechteck auch bei dem Rechner mit der ATI Radeon HD 6570 auf wo der Fehler inzwischen bereinigt wurde?
Das ganze kann bei diesem Recheck definitiv nicht an einem Programmfehler liegen, es gibt in dem Testprogramm mit der Blume nur einen einzigen Aufruf an die Zeichenfunktion.
Besonders verwundert bin ich, dass das Rechteck einen solchen Farbverlauf zeigt und Transparent auf dem eigentlichen Bild liegt.
Dementsprechend muss das ganze in irgendeiner Weise damit zusammenhängen wie OpenGL in den Programmen initialisiert wurde.
Kannst du vielleicht einmal mit dem Settingsfile herumspielen und die Auflösung des Programms ändern um zu testen wie dies die Position und Größe des Rechteckes beeinflusst.
Hast du irgendwelche persönlichen Einstellungen in den Grafikkartentreibern vorgenommen?
Es scheint ja so als ob dies der Fall gewesen sei bei dem ursprünglichen Problem. Es kann gut sein, dass du diese Einstellungen bei allen Rechnern vorgenommen hast und dies zu dem Problem führt.
Leider kann ich bei diesem Problem wirklich sehr wenig tun da ich den Fehler nicht reproduzieren kann und auch von niemand anderem darauf hingewiesen wurde. Mir fehlen schlichtweg die Informationen um wirklich eine Ursache aufspüren zu können ohne in wildes raten zu verfallen.
Habe mal die EInstellungen zurückgesetzt und bisschen rumgespielt. Keine Änderung.
Wenn ich die Auflösung in deiner config-Datei ändere, bleibt das Rechteck genau so groß wie bei 640x480 (und weiterhin in der Ecke).
Die Anzeigedauer des Rechtecks wird nicht durch die FPS beeinflusst, ist immer etwa gleichlang. Mit Vsync aus und 640x480 habe ich 1991 FPS.
Kurios: Der Vollbildmodus funktioniert nicht. Bei dem Rechner mit Ati-Karte (Das Rechteck ist komplett weg) hat Windows in Vollbild umgeschalten. Hier wird einfach das Fenster auf die Monitorauflösung gestreckt und der Ati-Fehler (Schwarz mit Grauem Rechteck unten rechts) kommt zum Vorschein :/
Kurios: Der Vollbildmodus funktioniert nicht. Bei dem Rechner mit Ati-Karte (Das Rechteck ist komplett weg) hat Windows in Vollbild umgeschalten. Hier wird einfach das Fenster auf die Monitorauflösung gestreckt und der Ati-Fehler (Schwarz mit Grauem Rechteck unten rechts) kommt zum Vorschein :/
...
Ich habe selbst einmal das Problem gehabt, dass Vollbild nicht funktioniert hat und stattdessen eine maximale Bildgröße im Fenstermodus verwendet wurde. Aber ohne ein Rechteck.
Bei mir trat dies direkt nach einem Treiberupdate auf und ich habe die Bildschirmauflösung einmal geändert und übernommen um das Problem zu lösen.
Wegen dem Problem mit dem Vollbild würde ich einmal raten etwas ähnliches zu probieren, mit dem Rechteck allerdings kann ich überhaupt nicht helfen, ich bin dabei ratlos.
Edit:
Probiere es doch vielleicht bitte nocheinmal mit diesem simplen Testprogramm.
Sehr viel simpler als dieses Programm kann ich es im Grunde garnicht gestalten, hier ist einmal der komplette Source-Code des ganzen Programms:
package p;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL14;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;
public class Main {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("Out.txt");
PrintStream ps = new PrintStream(fos);
System.setErr(ps);
System.setOut(ps);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
// Initializes the openGL context
doStuff();
} catch (LWJGLException e2) {
e2.printStackTrace();
}
try {
// Loads the texture and binds it
bindTexture();
} catch (IOException e) {
e.printStackTrace();
}
// the main loop and drawing is done here
loop();
// when the programme is about to terminate
Display.destroy();
}
/**
* Initializes the openGL display and sets all important flags and options.
* @throws LWJGLException
*/
public static final void doStuff() throws LWJGLException{
int width = 800;
int height = 600;
DisplayMode disMode = new DisplayMode(width, height);
Display.setDisplayMode(disMode);
Display.setVSyncEnabled(true);
Display.create();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glCullFace(GL11.GL_BACK);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glAlphaFunc(GL11.GL_GREATER, 0f);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glEnable(GL14.GL_COLOR_SUM);
GL11.glViewport(0, 0, width, height);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, width, height, 0, Double.MIN_VALUE, Double.MAX_VALUE);
GL11.glClearColor(0f, 0f, 0f, 1f);
}
/**
* Binds the texture with the path "Texture.png" and scales the texture matrix appropriately.
* @throws IOException
*/
public static final void bindTexture() throws IOException {
Texture tex = TextureLoader.getTexture("png", ResourceLoader.getResourceAsStream("Texture.png"), GL11.GL_LINEAR);
tex.bind();
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
GL11.glScalef(1f / tex.getTextureWidth(), 1f / tex.getTextureHeight(), 1);
}
/**
* The main loop of the programme.
* Clears the picture, calls updates on the display and manages keyboard input.
*/
public static final void loop() {
boolean exitRequest = false;
while (!exitRequest){
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
draw();
while(Keyboard.next()){
int key = Keyboard.getEventKey();
if (Keyboard.getEventKeyState() && key == Keyboard.KEY_ESCAPE) {
exitRequest = true;
}
}
Display.update();
Display.sync(60);
if (Display.isCloseRequested()) {
exitRequest = true;
}
}
}
/**
* The drawing of the texture is done here.
* Coordinates to be drawn to are fixed.
*/
public static final void draw() {
final int src_start_x = 0;
final int src_start_y = 0;
final int src_end_x = 400;
final int src_end_y = 380;
final int draw_start_x = 200;
final int draw_start_y = 110;
final int draw_end_x = 600;
final int draw_end_y = 490;
final int draw_z = 1;
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(src_start_x, src_start_y);
GL11.glVertex3f(draw_start_x, draw_start_y, draw_z);
GL11.glTexCoord2f(src_start_x, src_end_y);
GL11.glVertex3f(draw_start_x, draw_end_y, draw_z);
GL11.glTexCoord2f(src_end_x , src_end_y);
GL11.glVertex3f(draw_end_x, draw_end_y, draw_z);
GL11.glTexCoord2f(src_end_x , src_start_y);
GL11.glVertex3f(draw_end_x, draw_start_y, draw_z);
GL14.glSecondaryColor3f(0f, 0f, 0f);
GL11.glColor4f(1f, 1f, 1f, 1f);
GL11.glEnd();
}
}
Ach, ich weiß warum. Fiel mir gerade so der Grund ein .
Das ist der Trillian Ingame-Chat (wie der von Steam, aber für ICQ und co.). Der lädt eine DLL in alle Prozesse und wenn DirectX/OpenGL-Zeug verwendet wird, blendet es unten rechts einmalig eine Meldung ein...
Ist also kein Bug in deinem Programm, sondern in dem Ingame-Chat, sorry :/
Steht etwas im Out-log.txt?
Hast du einmal versucht das Programm nocheinmal herunterzuladen falls es einen Fehler bei dem Download gab?
Wie hast du die Version von Java überprüft? Durch die Kommandozeile?
Welche Grafikkarte benutzt du?
Und hast du goldenroy's Beitrag in Betracht gezogen ob es zu dem selben Problem gekommen sein konnte?
...
...
Einen Downloadfehler gab es nicht,
im Out-log steht: Mon Jan 28 22:38:37 CET 2013 INFO:Use Java PNG Loader = true
Grafikkarte: ATI Mobility Radeon HD 5430
und nein, ich öffne Java Dateien standartmäßig mit Java (nicht mit Winrar).
(auch die error-log ist leer)
Einen Downloadfehler gab es nicht,
im Out-log steht: Mon Jan 28 22:38:37 CET 2013 INFO:Use Java PNG Loader = true
Grafikkarte: ATI Mobility Radeon HD 5430
und nein, ich öffne Java Dateien standartmäßig mit Java (nicht mit Winrar).
(auch die error-log ist leer)
...
Hast du einmal geprüft ob du die neueste Version von Java installiert hast?
Am besten geht das über eine Kommandozeile mit dem Befehl "java -version".
@leonhart-squall:
Versuch doch bitte einmal den Ordner "Resources/Graphics/System" zu öffnen und dort die Datei "UI.png" umzubenennen auf "ui.png".
Ich habe von jemandem gehört, dass das Dateisystem von Linux case-sensitive ist im gegensatz zu dem von Windows.