LWJGL oder OpenGL (C++)

Pommes9485

Bekanntes Mitglied
Guten Tag,

mein Kumpel und ich schreiben momentan ein Spiel und mir sind jetzt langsam die Grenzen von LWJGL klar geworden, da zuviele Polygone im FPS Einsturz enden.

Noch lässt sich alles relativ einfach in C++ umschreiben, aber die Frage ist jetzt halt :
Ist OpenGL VIEL Effizienter unter C++ als LWJGL unter Java ?

Vor allem runde Objekte sind "anstregend" und wir wollen am Ende kein Baustein Spiel haben...
 
T

trääät

Gast
LWJGL kann intern auch über OpenGL rendern ... siehe Minecraft ...
das problem dürfte hier eher der java-code an sich sein der zur großen performance-bremse wird ...
wobei ich grundsätzlich schon sagen würde das es performance-plus gibt wenn man es direkt in C++ schreibt als über java und dann native-libs ...
 
G

Guest2

Gast
Moin,

der Grafikteil von LWJGL ist nur ein relativ dünner Wrapper um das native OpenGL, einen Geschwindigkeitsunterschied gibt es da höchstens akademisch. Ob C++ oder Java schneller ist, hängt imho von den Fähigkeiten des Entwicklers ab. Einige schreiben schnelleren C++ Code andere schnelleren Java Code.

Wenn ich hier raten müsste, dann das es im Code von Pommes Sequenzen aus glBegin, glVertex3f und glEnd gibt. Das wäre ein Fehler. Hier wird beschrieben wie Vertices auf die Grafikkarte geschoben werden.

(Wenn es nicht daran liegt, dann würden ein paar Details helfen das Problem einzukreisen.)

Viele Grüße,
Fancy
 

Helgon

Bekanntes Mitglied
Ich hab auch mit OpenGL angefangen, bin dann aber auf DirectX also C++ umgestiegen und finde es irgendwie "sauberer" und besserer abgepackt (vorallem eben seit dem großen Update der DirectX 11 API) - nur mal dazu.

Aber punkte performance. Ich arbeite mich grad durch alle möglichen Themen durch und da gibt es jedes mal so viele verdammte Möglichkeiten etwas anzugehen und alles wirkt sich anders auf die Performance aus.

Nehmen wir GemometryShader, bis 20 Vertices ist es ok, ab 27-40 Vertices haste 50% Einbuse, davor aber der heillige Gral der Tesselation

Oder wie oft man den BlendState, RasterSate oder irgendwelche DepthStencils ändert.. je weniger desto besser, oder wie man welche Objekte rendert.. von front to back um hardware basierte z-depth-tests durch zu führen oder wenn mans genau anders rum macht weil man blending verwendet usw usw..

oder hat man einen dynamischen vertex buffer der über die cpu arbeitet oder implementiert man es über hlsl sodass es die gpu abwickelt..

oder lädt man daten von der gpu in die cpu oder sonst was sodass es zu nem bottleneck kommt.. alles wirkt sich auf die performance aus

bin selber kein profi was das angeht, aber ich merk selbst, dass "wie man es schreibt" einen viel größeren einfluss auf die performance hat als alles andere (zumindest auf unserem niveau)

Grüße
 

Kr0e

Gesperrter Benutzer
C++ bietet Vorteile was Puffer angeht, da es wirkliche Pointer gibt. Ich gebe Fancy recht, der
ggf. entstehende Unterschied hängt vom Programmierer ab.

Ein Beispiel:

Java hat einen GC. Das ist in erster Linie gut, aber leider bietet Java nur Heap-Alloc an. Ergo jeder Vektor, jede Matrix, jedes Array landet erstmal auf dem Heap und muss dort auch wieder entsorgt werden.

Ja, ich weiß, es gibt Libs mit denen man Javaobjekte auf dem Stack anlegen lassen kann, aber viele wissen das nicht/nutzen es nicht.

C# bietet hier eine sehr schöne Zwischenlösung, dort gibt es structs und ref/out. Sowas hab ich in Java immer schon vermisst.

Man muss also wissen wie man performanten Code schreibt, sowohl in der einen, als auch in der anderen Sprache.


Tendentiell kann man sagen, dass C++ natürlich mehr Potential hat, man muss eben wissen, wie man es rausholt. Dafür ist das Arbeiten in C++ etwas unproduktiver , zumindest hab ich es so immer empfunden.


Fazit: Bleib bei dem was dir liegt. Auf Teufel komm raus ein Programm in C++ übersetzen wird erstmal nichts bringen. VBO und VAO sind hier relevante Stichworte um aus OpenGL das allerletzte rauszuholen.


Ich persönlich würde vermutlich auf C++ setzen, allein schon wegen den zahlreichen Tools/Libs/Engines die es gibt. Aber das ist Geschmackssache...
 

Titanpharao

Bekanntes Mitglied
Würde auch mal sagen, das es stark an deinem Code liegt und sich mit OpenGL C++ nicht wirklich bessern würde.

Hat damals mit der JME ~15 Millionen Polygone auf dem Bildschirm was etwa 10x soviel ist wie bei Crysis 2 (Startsequenz auf die Stadt^^) ist ... und 60 oder 30 fps. Auf jeden fall absolut akzeptabel.

Frage ist doch, was du für "Krasse" Models benutzt, das ein Designer Model was primär für 3DS Max render vorgesehen ist, nicht in ein Spiel gehört da es allein schon mehrere Millionen Polygone hat.

Sonst NIO Buffer und VBO wie schon erwähnt .... sollte eigentlich nicht wirklich einbrechen :S
 

Marco13

Top Contributor
Ich fand neben seiner schieren Existenz den Wiki-Eintrag As Fast As Cee ganz unterhaltsam. Ansonsten kannst du mal einen Blick auf Bytonic Software werfen, und davon ausgehen, dass das ganze mit Java 7 nochmal (ggf. deutlich) schneller geworden ist. (Die C-Version bleibt für immer so schnell wie sie jetzt ist - so viel dazu ;) )
 

Kr0e

Gesperrter Benutzer
Man kann schon nicht wegdiskutieren, dass Managed-Code Nachteile hat. Garbage-Collection finde ich persönlich überflüssig, auch schon deshalb weil ich in Java mal erlebt habe, dass es ein OutOfMEmory Error gab, weil ich zu oft neuen Speicher alloziiert habe und der alte nicht schnell genug gelöscht wurde.
Ja ich weiß, mann kann mit irgendwelchen JVM Tricks den GC stark konfigurieren, aber alles im allem... Warum der ganze Hickhack wenn man RAII & Destructor nutzt. Grad C++11 bietet was Return-By-Reference angeht sehr schöne neue Verbesserungen.

Aber man sollte definitiv nicht wegen ein paar Prozent Gewinn etwas nhemen, was einem nicht liegt. Vorallem sind mit ein paar Prozent viele Optimierungen und dreckiges Insiderwissen nötig.

Auch hat Java so seine Probleme was nativen Speicher angeht. Habe damals einen Videoplay mit ffmpeg und Píxel Puffer Object in Java geschrieben. Bei Full HD 90 % Auslastung. Laut Profiler ging die gesamte Zeit fürs kopieren der Puffer drauf, also wenn man FFmpeg einen Puffer zum befüllen gibt. Eine in C++ geschriebene Variante brachte 6- 8% Auslastung. Das ist kein Beweis, dass C++ besser ist, sondern einfach dass gewisse Tools eben für gewisse Sprachen ausgelegt sind, mehr nichtz ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
A LWJGL/OpenGL und Text Spiele- und Multimedia-Programmierung 8
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
D Java mit OpenGL - besser LWJGL oder JOGL? Spiele- und Multimedia-Programmierung 6
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
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
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
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 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
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 "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
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
T LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac Spiele- und Multimedia-Programmierung 19
H LWJGL: Fragen zum Verständnis Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben