Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 17, 2025 20:05

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: wglMakeCurrent bremmst wie sau
BeitragVerfasst: So Nov 30, 2003 16:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 26, 2003 20:30
Beiträge: 23
verwende zur zeit folgenden code um für meine einzelnen Layer einen PBuffer zu initialisieren:
Code:
  1.  
  2. wglChoosePixelFormatARB(h_DC, @ATTRIBS, @EMPTY_F, 64, @fmts, @numf);
  3.     hbuf1 := wglCreatePbufferARB(h_DC, fmts[0], PB_SIZE, PB_SIZE, @EMPTY_I);
  4.     hpdc1 := wglGetPbufferDCARB(hbuf1);
  5.     hprc1 := wglCreateContext(hpdc1);
  6.  
  7.     wglMakeCurrent(hpdc1, hprc1);
  8.     glEnable(GL_DEPTH_TEST);
  9.     glEnable(GL_BLEND);
  10.     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  11.     glClearColor(1, 1, 1, 0.1);
  12.     wglShareLists(h_RC, hprc1);
  13.  

(das ganze mal für meine Layer)
und hab dann 4 render-routinen die jeweils zu begin mit wglMakeCurrent(hpdc4 , hprc4) auf ihren context umschalten (hier für layer 4)
und am ende wieder mit wglMakeCurrent(h_DC, h_RC) auf den allgemeinen context zurückschalten
wenn ich das ganze mit primitivst-geometrie laufen lasse krieg ich heiße 32 FPS auf meinem rechner
-->wenn ich das letzte zurückschalten aber in die UI-Renderroutine reinschreib (3 context-swithes pro frame weniger)krieg ich 42FPS was mir eigentlich klar macht das das context-umschalten eine mittlere ewigkeit dauert.
ich hoffe jemand von euch kennt eine möglichkeit die ganze geschichte erheblich zu beschleunigen bzw. sagt mir wo ich mal wieder geistig falsch abgebogen bin.
cu
Volker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 30, 2003 16:47 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 26, 2003 20:30
Beiträge: 23
p.s.: hab das ganze noch nicht in threads zerlegt, weis aber auch wirklich nicht ob das den Umschaltvorgang zeitlich irgendwie beeinflussen würde


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 30, 2003 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Warum benutzt du denn vier Pixelpuffer? Wenn du die Kontextwechsel sparen willst (die kosten leider nunmal viel Zeit, daran lässt sich nichts ändern), dann nimm doch statt vier nur einen Pixelpuffer in dem du nacheinander deine Szene reinrenderst und vor dem Rendern der nächsten Szene die aktuelle in eine Textur kopierst...ist zwar ein wenig komplexer wegen der Statechanges, dürfte aber weitaus schneller sein.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 30, 2003 18:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
sonic.blade hat geschrieben:
p.s.: hab das ganze noch nicht in threads zerlegt, weis aber auch wirklich nicht ob das den Umschaltvorgang zeitlich irgendwie beeinflussen würde

Was denn für einen Umschaltvorgang bei Threads? Also ich verwende Threads und ich rufe nur einmal wglmakecurrent auf. Öfters musst du das bei Threads (meines Wissens) auch nicht machen. Allerdings wirst du wohl durch die Synchronisation mehr Zeit verbraten als durch das makecurrent bei nicht Threads.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 30, 2003 20:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 26, 2003 20:30
Beiträge: 23
hab´s jetzt auf einen pbuffer reduziert und noch ein falsches glfinish entfernt und es läuft mit 85FPS (bidschirm v-sync)
danke,
volker


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]