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

Aktuelle Zeit: Do Jul 17, 2025 06:27

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Jan 04, 2011 01:33 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Hallo,

Ich muss dieverse male Offscreen für Bitmaps renden. Dies funktioniert im Prinzip auch gut kostet aber durchaus Zeit nach erstellen des RC für das erstellen der Fonts und Textures.
Gibt es da eine Weg, den RC einfach zu behalten (dann muss ich Font und texture ja nur einmal erstellen)? WglShareliste möchte ich nicht verwenden, da dies wohl recht anfällig ist, wenn die Pixelformate nicht übereintsimmen - z.B. mit und ohne Hardwarebeschleunigung.
Ich will immer ein 24bit Bitmap erzeugen, jedoch soll deren Größe immer verschieden sein.

Derzeit benutze ich folgendes:
Code:
  DC2nd:= CreateCompatibleDC(0);
  TmpHDC:= GetDC(Form1.Handle);
  hBM:= CreateDIBSection(TmpHDC, TBitmapInfo(lpBitmapInfo^), DIB_RGB_COLORS, pBits, 0, 0);
  ReleaseDC(form1.Handle, TmpHDC);
  old_hBM:= SelectObject(DC2nd, hBm);
  SetBitmapDCPixelFormat(DC2nd); //own function
  HRC2nd:= wglCreateContext(DC2nd);
  wglMakeCurrent(DC2nd, HRC2nd);
..

  Draw
...
  wglMakeCurrent(0, 0);
  wglDeleteContext(HRC2nd);
  SelectObject(DC2nd, old_hBM);
  DeleteDC(DC2nd);


Da nun im CreateDIBSection dessen Größe festgelegt wird, und dann die DIB für die Erstellung des RC benutz wird (durch SelectObject) weiß ich nicht, wie ich den RC erhalte aber immer ein andere BMP Größe (Width, Height) verwenden kann.

Habt ihr da Lösungen?

user69


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jan 04, 2011 09:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Wieso benötigst du für Offscreen-Rendering einen zweiten Kontext? Würde es nicht ein simples Framebuffer-Object (FBO) tun?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 06, 2011 01:46 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
FBO könnte teils auch funktionieren, jedoch habe ich damit noch kaum Erfahrungen und etliche Bedenken (kann ich dabei die Textures und Displaylisten des aktuellen RCs nutzen?).
Außerdem benötige ich die die Daten nicht in einer Textur, müsste diese also wieder auslesen, da ich am Ende diese Drucken oder als BMP speichern möchte. Ich denk auch die Texturgröße (nur 512x512 sind laut OpenGL garantiert denk ich) ist hier reglementierend (Die Software muss auf jedem System laufen auch auf Intel IGPs und mit MS Software Emulation).

Ist unter den Bedingungen FBO wirklich zu empfehlen?
Gibt es Erfahrungen zu meiner ursprünglichen Frage, also einfach den RC zu behalten und das DIBSection jedes mal neu zu erzeugen (die Pixelformate sollten ja gleich sein)?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 06, 2011 09:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
(kann ich dabei die Textures und Displaylisten des aktuellen RCs nutzen?).

Aber klar doch...du bleibst bei dem einen RC.

Zitat:
(Die Software muss auf jedem System laufen auch auf Intel IGPs und mit MS Software Emulation).
Ist unter den Bedingungen FBO wirklich zu empfehlen?

Das könnte zum Problem werden. Die Extension GL_EXT_FRAMEBUFFER_OBJECT muss verfügbar sein.

_________________
Yeah! :mrgreen:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]