Hallo,
Ich programmiere seit einiger Zeit jetzt schon Java und hab vor ca. 2 Monaten angefangen in jMonkeyEngine-3 (Alpha-4) 3D-Spiele zu schreiben.
Mein Problem:
Wenn ich mithilfe eines Post-Prozessors versuche einfaches Wasser zu programmieren, entsteht immer der selbe Fehler ... nämlich dieser:
28.04.2011 19:49:58 com.jme3.app.Application handleError
SCHWERWIEGEND: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
com.jme3.renderer.RendererException: compile error in:ShaderSource[name=Common/MatDefs/Water/Water15.frag, defines, type=Fragment] error:Fragment shader failed to compile with the following errors:
WARNING: 0:18: warning(#239) Declaration should include a precision qualifier or the default precision should have been previously declared
ERROR: 0:19: error(#155) Internal error wrong operand type built in unary operator function. Type: in sampler2DMS
ERROR: error(#273) 1 compilation errors. No code generated
Das Programm startet von anfang an alles ganz normal, und lädt ersteinmal alle Modelle, Texturen, und Terrains, aber wenn das Programm dann das Wasser initialisieren will hängt sich bei mir einfach das Programm auf, und läuft nicht mehr weiter.
Hier der Code für das Wasser:
private FilterPostProcessor fpp;
private WaterFilter water;
private Vector3f lightDir = new Vector3f(-4.9f, -1.3f, 5.9f);
private float initialWaterHeight = 0.8f;
---------------------------------------------------------------------------------------------------
fpp = new FilterPostProcessor(assetManager);
water = new WaterFilter(rootNode, lightDir);
water.setWaterHeight(initialWaterHeight);
fpp.addFilter(water);
viewPort.addProcessor(fpp);
... allerdings, wenn ich das Spiel bei meinem Bruder laufen lasse, funktioniert alles genau so wie es soll.
Ich habe da so eine vermutung das das was mit meinem Computer also um genauer zu sein mit meinem Prozessor zu tun hat.
Hier meine Systemdaten:
Hersteller: Acer
Modell: Aspire 5820TG
Prozessor: Intel Core i5
CPU: M430 (2 Kerne (beidemale 2.27GHz))
Arbeitsspeicher: 4,00GB (3,80 GB verwendbar)
Systemtyp: Windows 7 Home Premium 64 Bit
Ich würde mich SEHR freuen wenn mir Irgendjemand bei diesem Problem helfen könnte.
MfG,
Alpha_omega!
Fehler bei Wasser!
-
-
Jetzt eine ganz wilde Vermutung, hatte aber selbst unlängst ein Problem mit 64-bit-Java, das sich letztendlich dadurch lösen lies, dass ich ein 32-bit-Betriebssystem und 32-bit-Java installierte habe.
Ok, das ist mehr Problemvermeidung als Lösung des Problems, aber vielleicht hilft dir das ja Mal, um die Ursache zu bestimmen.
-
Danke für deine Hilfe, aber ich habe mir jetzt java nocheinmal heruntergeladen (die 64-Bit Version), aber es hat leider nicht funktioniert,
und ich bin auch leider nicht auf die Ursache gekommen. -
Danke für deine Hilfe, aber ich habe mir jetzt java nocheinmal heruntergeladen (die 64-Bit Version), aber es hat leider nicht funktioniert,
und ich bin auch leider nicht auf die Ursache gekommen.Was ich meinte war ja, dass genau die 64-bit Version die Probleme gemacht hat. Weiß gar nicht mehr mit was genau, aber geholfen hat damals nur eine 32-bit Win XP Installation mit 32 bit Java drauf. 32 bit Java auf Win 7 64 bit hat damals keine Änderung gebracht.
-
Ich habe jetzt genau das gemacht was du gesagt hast, aber es hat leider wieder nicht geklappt...
k.A. was da los ist.
Als ich mir damals jMonkeyEngine down geloadet habe ging das mit dem Wasser ja einige Zeit lang, aber dann nach ~3 Tagen zeigte es mir
immer wieder den selben Fehler an.
Ich habe es jetzt auch schon damit probiert, jMonkeyEngine nochmals down zu loaden (habe es mit 32 und 64 Bit versucht), aber hat auch
nichts gebracht...
Habe jetzt echt k.A. mehr woran das liegen kann, aber das Einzige, das ich mir noch vorstellen könnte, ist, dass meine Treiber veraltet sind,
und das, dass irgendwie mit dem Post-Prozessor zusammenhängen könnte. -
Also wenn ich die Fehlermeldung richtig interpretiere liegt das mehr an dem Fragment-shader Water.frag ("ERROR: 0:19: error(#155) Internal error wrong operand type built in unary operator function. Type: in sampler2DMS") bzw. an deinem Grafikarten-Treiber (siehe http://jmonkeyengine.org/groups/general…led-to-compile/)
-
Danke für deine Hilfe.
Ich habe jetzt alle Treiber upgedated, aber es hat leider noch immer nichtss gebracht.
Gäbe es irgendeine Möglichkeit, dass man das Wasser noch anders programmieren könnte? -
Da kann ich dir leider nicht weiterhelfen, hast du es schon in dem Forum von der Engine versucht? Vlt. ist das ein (hardwareabhängiger) Bug.
-
Da liegt ja auch das Problem.
Bevor dieser Fehler aufgetretten ist, lief das ganze Spiel einwandfrei.
Alles funktionierte so wie es sollte (Wasser, Engine, 3D-Objekte, etc...).
Aber Java ist bei Spielen ziehmlich Fehleranfällig.
Es wäre vielleicht besser wenn ich für 3D-Spiele überhaupt eine neue, Betriebssystemabhängige, Programmiersprache lerne.
Da ich C und Java behersche wird das kein Problem, weil z.B. C++ oder C# größtenteils aus C und Java bzw. PHP bestehen. -
An Java liegt das ziemlich sicher nicht - das ist eine GLSL-Fehlermeldung, und da die JMonkeyengine auf LWJGL bzw. JOGL basiert wirst du das Problem bei der Verwendung desselben Shaders unter OpenGL weiterhin haben....
-
Und was würdest du empfehlen?
Sollte ich da einfach auf eine andere Programmieroberfläche wechseln? -
Meiner Meinung nach hast du folgende Möglichkeiten:
1) Bug den Entwicklern melden - und abwarten das er gefixt wird.
2) Versuchen den Bug selbst zu fixen
3) Einen anderen Shader verwenden
4) Game Engine wechseln, wobei ich aber keine weitere Gameeninge für Java kenne. -
ok...
das Shader wechseln klingt am besten.
aber wiesoll das gehen, und welchen anderen gibts da? -
Ich kann dich da nur auf das jmonkeyengine-Forum/Dokumentation verweisen
-
Alpha_Omega: Nichts wie ungut, aber Foren sind nicht dazu da, sich step-by-step guiden zu lassen.
Es gibt wahrscheinlich keinen anderen shader für wasser als jener, der als teil der Engine mitgeliefert wird.Ich würde dir empfehlen statt auf einem derart hohen Abstraktionslevel ein Spiel zu programmieren,
ganz unten mit OpenGL (oder von mir aus auch DirectX) anzufangen. Diese Details brauchst du früher oder später sowieso, und sich gleich auf jMonkey zu stürzen birgt die Gefahr Dinge zu fabrizieren, ohne wirklich eine Ahnung zu haben was hinter all dem wirklich passiert.
Wie willst du das nächste Problem lösen dass (mit sicherheit) auftreten wirst, wenn du die Fehlermeldungen nicht verstehst.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!