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

Aktuelle Zeit: Do Mär 28, 2024 19:36

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BUG in DGLOpenGL.pas gefunden ..
BeitragVerfasst: Di Mai 22, 2007 16:18 
Offline
DGL Member

Registriert: Mo Jun 12, 2006 14:47
Beiträge: 75
Programmiersprache: Object FPC
Hallo alle Mit einand.

Ich progge mittlerweile auch schon den ein oder andere Tag mit OpenGL und habe Letzten Wochen schon fast meinen Rechner aus dem Fenster geworfen vor Verzweiflung.

Ich wollte mittels AlphaBlending ein Bild Maskieren und dieses dann Rendern

Der Code sei mal hier gezeigt:

Code:
  1.  
  2.   //(*
  3.   // Transparenz mittels Alpha Maske
  4.   glColorMask(true, true, true, true);
  5.   renderQuad(BackTex);
  6.   glColorMask(False, false, false, true);
  7.   renderQuad(AlphaMask);
  8.   glColorMask(true, true, true, true);
  9.   glenable(gl_Blend);
  10.   glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);
  11.   renderQuad(AlphaMask);
  12.   gldisable(gl_blend);
  13.   //*)
  14.  

Das Problem ist nun das dieser Code nur Funktioniert wenn man den Aplha Kanal hat. Und genau hierran hat es gescheitert.

Das man das Transparente Rendern auch mittels
Code:
  1.  
  2.   //(*
  3.   // Wenn man ne textur hat die die Alha werte bereits hat
  4.   // dann wird die eigentlich immer so gerendert, Vorteil hier sind auch
  5.   // unterschiedliche Opazitäten möglich.
  6.   renderQuad(BackTex);
  7.   glenable(gl_Blend);
  8.   glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
  9.   renderQuad(AlphaMask);
  10.   gldisable(gl_blend);
  11.   //*)
  12.  


Machen kann weis ich. Ich wollte es aber Absichtlich nicht so machen.

Selbst mein Prof an der Uni sagte mir nun das der Obige Code Korreckt sei. Aber es ging einfach nicht.

Also habe ich heute in meiner Verzweiflung ein Programm geschrieben das sämtliche Daten der Grake ausliest. Und dieses Tool ( was ich bald auch auf meine HP (Link) stellen werde , falls jemand neugierig ist und diese Infos auch haben will ) hat es mir dann gezeigt.

DGLOpenGL schafft es einfach nicht einen Alpha Buffer zu Allokieren.

Sieht man sich den Source an merkt man auch schnell warum. Ich habe mir mal Erlaubt das Ganze um zu schreiben und Poste hier meine neue CreateRenderingContext die ich nutze.

Code:
  1.  
  2. Function CreateRenderingContext2(DC: HDC; Options: TRCOptions; ColorBits, ZBits, StencilBits, AccumBits, AuxBuffers: Integer; Layer: Integer): HGLRC;
  3. Const
  4.   OBJ_MEMDC = 10;
  5.   OBJ_ENHMETADC = 12;
  6.   OBJ_METADC = 4;
  7.   PFD_DOUBLEBUFFER = $00000001;
  8.   PFD_STEREO = $00000002;
  9.   PFD_DRAW_TO_WINDOW = $00000004;
  10.   PFD_DRAW_TO_BITMAP = $00000008;
  11.   PFD_SUPPORT_GDI = $00000010;
  12.   PFD_SUPPORT_OPENGL = $00000020;
  13.   PFD_TYPE_RGBA = 0;
  14.   PFD_MAIN_PLANE = 0;
  15.   PFD_OVERLAY_PLANE = 1;
  16.   PFD_UNDERLAY_PLANE = LongWord(-1);
  17.   MemoryDCs = [OBJ_MEMDC, OBJ_METADC, OBJ_ENHMETADC];
  18. Var
  19.   PFDescriptor: TPixelFormatDescriptor;
  20.   PixelFormat: Integer;
  21.   AType: DWORD;
  22. Begin
  23.   If LibHandle = 0 Then
  24.     InitOpenGL;
  25.  
  26. {$IFNDEF CLR}FillChar(PFDescriptor, SizeOf(PFDescriptor), 0);
  27. {$ENDIF}
  28.   With PFDescriptor Do Begin
  29.     nSize := SizeOf(PFDescriptor);
  30.     nVersion := 1;
  31.     dwFlags := PFD_SUPPORT_OPENGL;
  32.     AType := GetObjectType(DC);
  33.     If AType = 0 Then
  34.       RaiseLastOSError;
  35.     If AType In MemoryDCs Then
  36.       dwFlags := dwFlags Or PFD_DRAW_TO_BITMAP
  37.     Else
  38.       dwFlags := dwFlags Or PFD_DRAW_TO_WINDOW;
  39.     If opDoubleBuffered In Options Then
  40.       dwFlags := dwFlags Or PFD_DOUBLEBUFFER;
  41.     If opGDI In Options Then
  42.       dwFlags := dwFlags Or PFD_SUPPORT_GDI;
  43.     If opStereo In Options Then
  44.       dwFlags := dwFlags Or PFD_STEREO;
  45.     iPixelType := PFD_TYPE_RGBA;
  46.     cColorBits := ColorBits;
  47.     cDepthBits := zBits;
  48.     cStencilBits := StencilBits;
  49.     cAccumBits := AccumBits;
  50.     cAuxBuffers := AuxBuffers;
  51. //------------------------------------------------------------------------------
  52. // Added by Corpsman 22.05.2007
  53.     cAlphaBits := ColorBits;
  54. //------------------------------------------------------------------------------
  55.     If Layer = 0 Then
  56.       iLayerType := PFD_MAIN_PLANE
  57.     Else If Layer > 0 Then
  58.       iLayerType := PFD_OVERLAY_PLANE
  59.     Else
  60.       iLayerType := Byte(PFD_UNDERLAY_PLANE);
  61.   End;
  62. {$IFDEF CLR}
  63.   PixelFormat := ChoosePixelFormat(DC, PFDescriptor);
  64. {$ELSE}
  65.   PixelFormat := ChoosePixelFormat(DC, @PFDescriptor);
  66. {$ENDIF}
  67.   If PixelFormat = 0 Then
  68.     RaiseLastOSError;
  69.  
  70.   If GetPixelFormat(DC) <> PixelFormat Then
  71. {$IFDEF CLR}
  72.     If Not SetPixelFormat(DC, PixelFormat, PFDescriptor) Then
  73. {$ELSE}
  74.     If Not SetPixelFormat(DC, PixelFormat, @PFDescriptor) Then
  75. {$ENDIF}
  76.     RaiseLastOSError;
  77.  
  78.   DescribePixelFormat(DC, PixelFormat, SizeOf(PFDescriptor), PFDescriptor);
  79.   Result := wglCreateLayerContext(DC, Layer);
  80.   If Result = 0 Then
  81.       RaiseLastOSError;
  82.   Else
  83.     LastPixelFormat := 0;
  84. End;
  85.  


Mein Wunsch an die Entwickler von DGLOpenGl.pas

Bitte Passt das Ganze an, oder sagt mir wie man es in eurem Sinne Korreckt macht. Tatsache ist aber das mit dieser Änderung mein Oben geposteter Source wunderbar funktioniert !!

_________________
Try my 3D-Game (new Version 2) Balanced2 v2.02
or See my other Stuff at http://www.Corpsman.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 22, 2007 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Grundsätzlich eine gute Idee so wie ich das sehe, allerdings würde ich statt einfach ColorBits zu übergeben einen neuen Parameter hinzufügen um auch das auschalten des Alpha-Buffers zu erlauben.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 22, 2007 16:49 
Offline
DGL Member

Registriert: Mo Jun 12, 2006 14:47
Beiträge: 75
Programmiersprache: Object FPC
ich hab es halt so gemacht damit sich die Parameter nciht ändern.

bei den Accum Bits kann man den Alpha Kanal nämlich auch nicht getrennt von den Color Bits setzen.

_________________
Try my 3D-Game (new Version 2) Balanced2 v2.02
or See my other Stuff at http://www.Corpsman.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 22, 2007 18:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hab es mal hierhin verschoben.

Also etwas an der Schnittstelle ändern werde ich nicht. Es wäre natürlich das Sinnvollste und Beste. Nur um das klar zu stellen. Aber bei einem Header der recht weit verbreitet ist darf man nicht einfach etwas ändern was zu inkompatibilitäten führt. Deswegen muss die Schnittstelle zu mindest so bleiben wie sie ist.

Von Hause aus aber immer einen Alphakanal zu erstellen halte ich für wenig sinnvoll, da er auch bei 16 bzw 24 Bit versuchen würde einen anzulegen. Und man das wie Horazont schon sagte eben auch nicht unterbinden könnte. Bzw kann man sich auch nicht drauf verlassen, dass man unbedingt auch einen bekommt. Da hat der Treiber das letzte Wort. Meine ATI zum Beispiel erstellt bei 32 Bit automatisch einen Alphakanal. Und bei 16 Bit Farbtiefe (wenn ich Alpha auf 8 Bit setze) wird noch zusätzlich ein 8 Bit Alphakanal erstellt. Habe es gerade ausprobiert.

Diese Methode im Header hat auch nicht den Anspruch perfekt zu sein. Sie soll lediglich einen leichten Einstieg ermöglichen. Und das Auslesen des Framebuffer kann mitunter auch recht langsam werden. Da gab es auch schon schon mal ein Thema zu wo die Geschwindigkeit dadurch wirklich langsam wurde.

Da ich aber nicht nur Kontra bin hier mein Vorschlag. Man könnte es so erweitern, dass die derzeitige Funktion auf die Erweiterte zurückgreift. Aber viel wichtiger wäre mir, dass man es in einem Jahr nicht schon wieder verändern müsste. Es sollte natürlich auch nicht komplizierter werden als der Weg über die GDI. Die im übbrigen ja auch nicht wirklich komplex ist. Also man ist ja nicht unbedingt gezwungen den Header zu benutzen. Das aber nur mal so in den Raum geworfen.

Mit anderen Worten. Mich würden dazu auch andere (und/oder ergänzende) Meinungen interessieren. Ich möchte da nur nichts übers Knie brechen oder etwas implementieren was über den Funktionsumfang des Headers hinaus geht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 22, 2007 22:54 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Überschreib doch einfach die Funktion. Delphi unterstützt doch Funktionen mit gleichem Namen aber unterschiedlichen Parametern. Behalte die Funktion wie sie ist, und biete eine alternative mit an, der man übergibt wie gross der Alphabuffer sein soll.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 06:08 
Offline
DGL Member

Registriert: Mo Jun 12, 2006 14:47
Beiträge: 75
Programmiersprache: Object FPC
oh man warum sind wir da nicht gleich drauf gekommen.

Flash hat vollkommen Recht. Durch ein Überladen wäre das Prob optimal gelöst.


Und was die Erweiterungen angeht ist's doch auch klar.

man schaut sich
Code:
  1.   tagPIXELFORMATDESCRIPTOR = packed record
  2.     nSize: Word;
  3.     nVersion: Word;
  4.     dwFlags: DWORD;
  5.     iPixelType: Byte;
  6.     cColorBits: Byte;
  7.     cRedBits: Byte;
  8.     cRedShift: Byte;
  9.     cGreenBits: Byte;
  10.     cGreenShift: Byte;
  11.     cBlueBits: Byte;
  12.     cBlueShift: Byte;
  13.     cAlphaBits: Byte;
  14.     cAlphaShift: Byte;
  15.     cAccumBits: Byte;
  16.     cAccumRedBits: Byte;
  17.     cAccumGreenBits: Byte;
  18.     cAccumBlueBits: Byte;
  19.     cAccumAlphaBits: Byte;
  20.     cDepthBits: Byte;
  21.     cStencilBits: Byte;
  22.     cAuxBuffers: Byte;
  23.     iLayerType: Byte;
  24.     bReserved: Byte;
  25.     dwLayerMask: DWORD;
  26.     dwVisibleMask: DWORD;
  27.     dwDamageMask: DWORD;
  28.   end;
  29.  

an und schaut einfach mal welche dieser Werte Zusätzlich noch von Interesse sein könnten. Diese nimmt man dann in die Parameterliste der neuen CreateRenderingContext auf.

_________________
Try my 3D-Game (new Version 2) Balanced2 v2.02
or See my other Stuff at http://www.Corpsman.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 08:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Flash so weit so klar. In meinem Post habe ich das ja auch schon angedeutet "Man könnte es so erweitern, dass die derzeitige Funktion auf die Erweiterte zurückgreift.".

Wie man das dann löst hängt davon ab was für Forderungen insgesammt aufkommen. Aber das ist nun wirklich kein Problem. Mir geht es vielmehr darum, dass man sich mal gedanken macht was man wirklich braucht. Und dann nicht einfach nur die Methode erweitern sondern so gestalten, dass man evtl auch die ein oder andere altlast loswird.

Als Beispiel. Bei der aktuellen Methode wird noch ein AuxBuffers und ein Layer übergeben. Layer sind zwar vorgesehen aber bei welcher Grafikkarte werden die denn tatsächlich unterstützt? Doch eher nur bei den richtig teuren. Und ob man die dann überhaupt braucht steht noch ganz woanders geschrieben. Oder wie schaut das mit Multisampling aus?

In diese Richtung möchte ich das Ganze gerne lenken. Denn das was ich dann implementiere werde sollte schon gut überlegt sein. Also es sollte all das bieten was man haben will und es sollte keine Methode mit 20 Parametern werden. Dann kann man das schon fast selber programmieren.

PS: Entschuldigt, dass ich es nicht einfach so umsetze sondern es komplizierter mache. Haltet meine harte Haltung aber bitte nicht für Kontra. Ich möchte nur vermeiden, dass man etwas zu früh verabschiedet was man eigentlich hätte besser machen können. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 13:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
@Corpsman: Was mir gerade einfällt. Hast du eigentlich 32 Bit Farbtiefe im deinem System eingestellt? Bzw was hast du denn für eine Grafikkarte?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 14:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Also mir kommt das hier sehr spanisch vor. Ich hab ja schon auf nem dutzend verschiedener Grakas OGL gemacht (NVidia, Kyro, Matrox, ATI, etc.) und nie ein solches Problem gehabt, genausowenig einer meiner User (und Napalm Bomber 3D hat z.B. >100.000 Downloads).

Ausserdem steht sogar im MSDN dass zuerst ein Pixelformat gesucht wird dass dem iPixelType entspricht. Wenn man da also PFD_TYPE_RGBA angibt sucht die Funktion zuerst ein Format mit RGBA-Kanälen. Und sollte er kein solches finden, dann erst sucht er ein Format dass zu den via c*Bits angegebenen Attributen passt.
Wenn es hier also ein Problem gibt, dann liegt es wohl eher auf Seiten des Treibers als auf Seiten des Headers. Du nutzt nicht zufällig irgend einen geleakten Beta-Treiber?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Es ist auch nicht die welt, sich mal schnell die Funktion für den privaten Gebrauch zu erweitern, falls man mehr braucht, als implementiert ist. Ich habe mir "damals" auch eine Funktion geschrieben, die kurz ein Dummy-Form erstellt wo es einen RC created um die Multisampling-Fähigkeit zu prüfen. Das war wirklich nicht das Problem. Seit dem ich SDL nutze ist mir das relativ egal, von daher werde ich mich bei der letzendlichen Entscheidung, die Funktion zu ändern bedeckt halten, aber eine überladene Methode wäre vielleicht sinnvoll.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 23, 2007 17:33 
Offline
DGL Member

Registriert: Mo Jun 12, 2006 14:47
Beiträge: 75
Programmiersprache: Object FPC
@Lossy eX

Keine Sorge ich halte es nicht Für Kontra, im Gegenteil. Ich finde es gut das du dir Wirklich gedanken um der Ganzen Dinge machst und nicht einfach schnell und unüberlegt nachbesserst damit halt Ruhe ist.

und J aich habe 32 bit Farbiefe. Ich nutze hier eine Gforce 8800 gts Ich denke doch das die mit den Aktuellen OpenGL Sachen klar kommen sollte.

@ Sasche

ich nutze die Treiber Ver : 6.14.10.9792 mir sagt das nix aber vielleicht dir.

@Lord Horazont

Versteh mich net Falsch. Ich habe für meine Privaten Zwecke die Unit auch umgeschrieben. Nur mus man immer an die jenigen denken die sich mit der ganzen Zhematik nicht auskennen und diese sind Froh wenn sie sehen das es da einen Alphakanal gibt.
Ich hab auch fast ne Woche gebraucht bis ich es gefunden hab.


Übrigens hab ich das nu so
Code:
  1.  
  2. // =============================================================================
  3. // CreateRenderingContext
  4. // =============================================================================
  5.  
  6. //------------------------------------------------------------------------------
  7. // Modified by Corpsman 22.05.2007
  8. function CreateRenderingContext(DC: HDC; Options: TRCOptions; ColorBits, ZBits, StencilBits, AccumBits, AuxBuffers: Integer; Layer: Integer): HGLRC;
  9. begin
  10.  result := CreateRenderingContext(DC, Options, Colorbits, 0, ZBits, StencilBits, AccumBits, AuxBuffers, Layer);
  11. end;
  12.  
  13. function CreateRenderingContext(DC: HDC; Options: TRCOptions; ColorBits, AlphaBits, ZBits, StencilBits, AccumBits, AuxBuffers: Integer; Layer: Integer): HGLRC;
  14. //------------------------------------------------------------------------------
  15. const
  16.   OBJ_MEMDC = 10;
  17.   OBJ_ENHMETADC = 12;
  18.   OBJ_METADC = 4;
  19.   PFD_DOUBLEBUFFER = $00000001;
  20.   PFD_STEREO = $00000002;
  21.   PFD_DRAW_TO_WINDOW = $00000004;
  22.   PFD_DRAW_TO_BITMAP = $00000008;
  23.   PFD_SUPPORT_GDI = $00000010;
  24.   PFD_SUPPORT_OPENGL = $00000020;
  25.   PFD_TYPE_RGBA = 0;
  26.   PFD_MAIN_PLANE = 0;
  27.   PFD_OVERLAY_PLANE = 1;
  28.   PFD_UNDERLAY_PLANE = LongWord(-1);
  29.   MemoryDCs = [OBJ_MEMDC, OBJ_METADC, OBJ_ENHMETADC];
  30. var
  31.   PFDescriptor: TPixelFormatDescriptor;
  32.   PixelFormat: Integer;
  33.   AType: DWORD;
  34. begin
  35.   if LibHandle = 0 then
  36.     InitOpenGL;
  37.  
  38. {$IFNDEF CLR}FillChar(PFDescriptor, SizeOf(PFDescriptor), 0); {$ENDIF}
  39.   with PFDescriptor do
  40.   begin
  41.     nSize := SizeOf(PFDescriptor);
  42.     nVersion := 1;
  43.     dwFlags := PFD_SUPPORT_OPENGL;
  44.     AType := GetObjectType(DC);
  45.     if AType = 0 then
  46.       RaiseLastOSError;
  47.     if AType in MemoryDCs then
  48.       dwFlags := dwFlags or PFD_DRAW_TO_BITMAP
  49.     else
  50.       dwFlags := dwFlags or PFD_DRAW_TO_WINDOW;
  51.     if opDoubleBuffered in Options then
  52.       dwFlags := dwFlags or PFD_DOUBLEBUFFER;
  53.     if opGDI in Options then
  54.       dwFlags := dwFlags or PFD_SUPPORT_GDI;
  55.     if opStereo in Options then
  56.       dwFlags := dwFlags or PFD_STEREO;
  57.     iPixelType := PFD_TYPE_RGBA;
  58.     cColorBits := ColorBits;
  59. //------------------------------------------------------------------------------
  60. // Modified by Corpsman 22.05.2007
  61.     cAlphaBits := AlphaBits;
  62. //------------------------------------------------------------------------------
  63.     cDepthBits := zBits;
  64.     cStencilBits := StencilBits;
  65.     cAccumBits := AccumBits;
  66.     cAuxBuffers := AuxBuffers;
  67.     if Layer = 0 then
  68.       iLayerType := PFD_MAIN_PLANE
  69.     else if Layer > 0 then
  70.       iLayerType := PFD_OVERLAY_PLANE
  71.     else
  72.       iLayerType := Byte(PFD_UNDERLAY_PLANE);
  73.   end;
  74. {$IFDEF CLR}
  75.   PixelFormat := ChoosePixelFormat(DC, PFDescriptor);
  76. {$ELSE}
  77.   PixelFormat := ChoosePixelFormat(DC, @PFDescriptor);
  78. {$ENDIF}
  79.   if PixelFormat = 0 then
  80.     RaiseLastOSError;
  81.   if GetPixelFormat(DC) <> PixelFormat then
  82. {$IFDEF CLR}
  83.     if not SetPixelFormat(DC, PixelFormat, PFDescriptor) then
  84. {$ELSE}
  85.     if not SetPixelFormat(DC, PixelFormat, @PFDescriptor) then
  86. {$ENDIF}
  87.       RaiseLastOSError;
  88.   DescribePixelFormat(DC, PixelFormat, SizeOf(PFDescriptor), PFDescriptor);
  89.   Result := wglCreateLayerContext(DC, Layer);
  90.   if Result = 0 then
  91.     RaiseLastOSError
  92.   else
  93.     LastPixelFormat := 0;
  94. end;
  95.  

gemacht.

_________________
Try my 3D-Game (new Version 2) Balanced2 v2.02
or See my other Stuff at http://www.Corpsman.de


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.119s | 19 Queries | GZIP : On ]