Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

1

29.06.2009, 07:25

QT und OpenGL

Hi,
Ich hab von der Uni aus nen Framework bekommen, was ne QT Oberfläche hat, mit einem OpenGL widget und da eben verschiedenes mit machen soll. Allerdings finde ich, dass das ganze eine ziemlich miese performance hat... bei 400.000 triangles hab ich nur noch ~15fps. ob mit textur, smooth shading oder ohne macht keinen unterschied. aber die fps scheinen ziemlich direkt von der anzahl der triangles abzuhängen.... das programm ist soweit ziemlich einfach gestrickt und es gibt soweit kaum (jedenfalls seh ich keine offensichtlichen mehr) verbesserungsmöglichkeiten. Aber was sind heutzutage denn noch 400k dreiecke... kann das an QT liegen, dass es das so ausbremst?

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

2

29.06.2009, 09:58

400k sind nicht mehr viel? Ich glaube ich habe mich lange nicht mehr mit der technischen Seite von 3D Spielen auseinander gesetzt :D

3

29.06.2009, 10:05

Benutze Vertex Buffer und sowenig Drawcalls wie möglich.
Lieber dumm fragen, als dumm bleiben!

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

4

29.06.2009, 12:53

Also ich dachte 400k ist nicht viel... habe ich mich da geirrt?!
Und was genau verstehst du unter einem drawcall? ein glBegin/glEnd?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

29.06.2009, 13:33

verwendest du den glVertex*() Kram? Wenn ja sollst du dich nicht wundern, das Zeug kommt aus der Steinzeit.
Verwend besser Vertex Buffer Objects. 400k Dreicke sind, abhängig davon was du damit anstellst, auch heute nicht unbedingt wenig...

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

6

29.06.2009, 15:45

ja, den kram verwende ich tatsächlich... hauptsächlich weil das ganze framework eben darauf basiert... wohl aus gründen der einfachheit ^^
Ich werde mich dann mal in diese tollen VBOs einlesen und ggf. das ganze mal umschreiben.

Was mich aber immer noch interessiert ist, wie viele (ganz grob) dreiecke denn in einem heutigen, modernen 3d spiel durchschnittlich zu sehen sind?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

29.06.2009, 16:04

Möglichst wenig...

Sry, aber es ist komplett sinnlos da eine pauschale Aussage zu treffen, das hängt von zu vielen Faktoren ab...

8

29.06.2009, 16:58

Die Zahl der Dreiecke ist nur einer von vielen Faktoren. Wichtig ist auch die Anzahl an DrawCalls, die Komplexität der Vertex und Fragment Shader, wie viele Dreiecke direkt gecullt werden, wie groß die gerenderten Dreiecke sind und so weiter.
400k kann man sicherlich schaffen, aber es kann auch schon bei 5k ruckeln, wenn man zu viele drwaCalls hat und jedes Dreieck einmal über den ganzen Bildschirm geht.
Lieber dumm fragen, als dumm bleiben!

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

9

29.06.2009, 17:37

Was das culling angeht, wollte ich auch nochmal nachfragen. was genau ist da standardmäßig aktiviert? Wenn ich

C-/C++-Quelltext

1
2
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);

mache funktioniert es bei meinem Zylinder "fast" richtig. Das einzige Problem: er cullt immer die Untere Kreisfläche, die normalenvektoren (habe sie rendern lassen) scheinen aber zu stimmen. Ich kann also durchsehen, und sehe dann auch, wie er die faces hintendran nicht mehr rendert. Mache ich da jetzt was falsch? und sollte culling nicht standardmäßig aktiviert sein? (ich kanns ja nicht wirklich prüfen :D)

Das Problem bleibt auch beim rotieren des zylinders bestehen.

Werbeanzeige