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

Aktuelle Zeit: Do Jul 17, 2025 14:13

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: WGL_ARB/EXT_multisample
BeitragVerfasst: Do Mai 05, 2011 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi Leute,

bisher hab ich mein AntiAliasing über den Akkumulationspuffer laufen lassen, das war allerdings FSAA, nun wollte ich auf MSAA umsteigen und hab mir was zum Tiefenpuffer durchgelesen usw. Dabei bin ich dann drauf gestoßen, dass es die im Titel genannten Erweiterungen gibt.

Nun hatte ich bisher noch garnicht mit Pixelformaten zu tun und hab mir jetzt ca. 8 Stunden lang hinter einander weg (bis auf eine kurze Raucherpause) alles Mögliche dazu durchgelesen und mir verschiedene Quellcodes angeguckt.

Nun hab ich mich mal rangesetzt und mir eine Funktion gebastelt, die mir irgendwann mal das passende Pixelformat in eine Variable speichern soll, doch leider hänge ich jetzt daran fest, dass die Funktion bei wglChoosePixelFormatARB nicht ein Pixelformat zurück gibt. Ich glaube nicht wirklich daran, dass meine ATI Radeon HD 5830 nicht ein einziges Pixelformat für Multisampling hat =/

Hier mal der Quelltext:
Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2.   function GetAAPixelformat(var pf: Integer): Boolean;
  3. procedure PostError();
  4. var e: Integer;
  5. begin
  6.   e := glGetError;
  7.   if e<>GL_NO_ERROR then
  8.     Memo1.Lines.Add(gluErrorString(e));
  9. end;
  10.   const MAX_PFS = 20;
  11.   var
  12.     tmpForm: TForm;
  13.     multiARB, multiEXT: Boolean;
  14.     IAttribs: Array[0..18] of Integer;
  15.     FAttribs: Array[0..0] of Single;
  16.     PossiblePFs: Array[0..MAX_PFS] of Integer;
  17.     PFcount, QueryAttrib: Integer;
  18.     tmpDC, oldDC: HGLRC;
  19.     tmpRC, oldRC: HGLRC;
  20.     i: Integer;
  21.     PFSampleCount: Array[0..MAX_PFS] of Integer;
  22.   begin
  23.     Result := False;
  24.     oldDC := wglGetCurrentDC;
  25.     oldRC := wglGetCurrentContext;
  26.  
  27.     tmpForm := TForm.Create(nil);
  28.     tmpDC := GetDC(tmpForm.Handle);
  29.     tmpRC := CreateRenderingContext(tmpDC, [opDoubleBuffered], 32, 24, 0,0,0, 0);
  30.     if (tmpRC=0) then
  31.     begin
  32. PostError;
  33.       tmpForm.Free;
  34.       Exit;
  35.     end;
  36.  
  37.     ActivateRenderingContext(tmpDC, tmpRC);
  38.  
  39.     multiARB := WGL_ARB_extensions_string and
  40.                    WGL_ARB_pixel_format and
  41.                    (WGL_ARB_MULTISAMPLE or GL_ARB_MULTISAMPLE);
  42.  
  43.     multiEXT := WGL_EXT_extensions_string and
  44.                    WGL_EXT_pixel_format and
  45.                    (WGL_EXT_MULTISAMPLE or GL_EXT_MULTISAMPLE);
  46.  
  47.     if not (multiARB or multiEXT) then
  48.     begin
  49.       tmpForm.Free;
  50.       DestroyRenderingContext(tmpRC);
  51.       Exit;
  52.     end;
  53.  
  54.     if multiARB then
  55.     begin
  56.       Read_WGL_ARB_pixel_format;
  57.       multiEXT := False;
  58.     end
  59.     else
  60.       Read_WGL_EXT_pixel_format;
  61. PostError;
  62.  
  63.     IAttribs[0]  := WGL_DRAW_TO_WINDOW_EXT;
  64.     IAttribs[1]  := 1;
  65.     IAttribs[2]  := WGL_SUPPORT_GDI_ARB;
  66.     IAttribs[3]  := 1;
  67.     IAttribs[4]  := WGL_DOUBLE_BUFFER_ARB;
  68.     IAttribs[5]  := 1;
  69.     IAttribs[6]  := WGL_PIXEL_TYPE_ARB;
  70.     IAttribs[7]  := WGL_TYPE_RGBA_ARB;
  71.     IAttribs[8]  := WGL_COLOR_BITS_ARB;
  72.     IAttribs[9]  := 32;
  73.     IAttribs[10] := WGL_ALPHA_BITS_ARB;
  74.     IAttribs[11] := 0;
  75.     IAttribs[12] := WGL_DEPTH_BITS_ARB;
  76.     IAttribs[13] := 24;
  77.     IAttribs[14] := WGL_STENCIL_BITS_ARB;
  78.     IAttribs[15] := 0;
  79.     IAttribs[16] := WGL_SAMPLE_BUFFERS_ARB;
  80.     IAttribs[17] := 1;
  81.     IAttribs[18] := 0;
  82.  
  83.     FAttribs[0] := 0;
  84.  
  85.     if multiARB then
  86.       wglChoosePixelFormatARB(tmpDC, @IAttribs[0], @FAttribs[0], MAX_PFS, @PossiblePFs[0], @PFcount)
  87.     else
  88.       wglChoosePixelFormatEXT(tmpDC, @IAttribs[0], @FAttribs[0], MAX_PFS, @PossiblePFs[0], @PFcount);
  89. PostError;
  90.  
  91.     if PFcount>MAX_PFS then
  92.       PFcount := MAX_PFS;
  93.  
  94.     QueryAttrib := WGL_SAMPLES_ARB;
  95.     if multiARB then
  96.     begin
  97.       for i := 0 to PFcount-1 do
  98.        wglGetPixelFormatAttribivARB(tmpDC, PossiblePFs[i], 0, 1, @QueryAttrib, @PFSampleCount[i]);
  99.     end
  100.     else
  101.       for i := 0 to PFcount-1 do
  102.         wglGetPixelFormatAttribivEXT(tmpDC, PossiblePFs[i], 0, 1, @QueryAttrib, @PFSampleCount[i]);
  103. PostError;
  104.  
  105.     tmpForm.Free;
  106.     DestroyRenderingContext(tmpRC);
  107.     ReleaseDC(tmpForm.Handle, tmpDC);
  108.     Result := True;
  109.  
  110.     Memo1.Clear;
  111.     for i := 0 to PFcount-1 do
  112.       Memo1.Lines.Add(IntToStr(possiblepfs[i])+'->'+IntToStr(pfsamplecount[i]));
  113.   end;
  114. var pf: Integer;
  115. begin
  116.   if not InitOpenGL() then
  117.     Application.Terminate;
  118.   GetAAPixelFormat(pf);
  119. end;


Sind da irgendwelche Fehler drin?

MfG
bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WGL_ARB/EXT_multisample
BeitragVerfasst: Do Mai 05, 2011 17:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Vergleiche mit dieser Funktion und dem Thread drumherum.

greetings

_________________
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: Re: WGL_ARB/EXT_multisample
BeitragVerfasst: Do Mai 05, 2011 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Also ich hab mir mal deine Funktion angeschaut, bzw. einfach mal bei mir mit rein geschrieben, einige Variablen die den gleichen Namen hatten unbenannt und zwischen InitOpenGl und meiner Kontext-Erstellung aufgerufen, nun ist es so, wie im von dir verlinkten Thread so, dass ich eine Zugriffsverletzung bekomme :S

Also bevor deine Funktion aufgerufen wird, wird nur "if not InitOpenGl then Application.Terminate;" ausgeführt ... ist das falsch?

MfG
bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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.008s | 16 Queries | GZIP : On ]