Vra

Multisampling is 'n manier om die toepassing van die volle screen anti-aliasing (FSAA) in 3D-programme. Ek moet multisampling gebruik in my OpenGL program, wat op die oomblik is ingesluit in 'n wxWidgets GUI. Is daar 'n manier om dit te doen? Asseblief net reageer as jy die gedetailleerde stappe om dit te bereik weet.

Ek is bewus van bemagtigende multisampling met behulp van WGL (Win32 uitbreidings aan OpenGL). Maar, aangesien my OpenGL program nie in MFC is geskryf (en ek wil die kode om 'n multi-platform draagbare wees), dit is nie 'n opsie vir my.

Was dit nuttig?

Oplossing

Ek het uiteindelik Multisampling saam met my wxWidgets OpenGL program. Dit is 'n bietjie slordig op die oomblik, maar hier is hoe:

wxWidgets nie ' Multisampling ondersteuning in hul stabiele vrystellings op die oomblik (nuutste weergawe in hierdie tyd is 2.8.8 ). Maar, dit is beskikbaar as 'n kol en ook deur middel van hul daaglikse momentopname. (Laasgenoemde is verblydend, aangesien dit beteken dat die kol is aanvaar en moet verskyn in later stabiele vrystellings indien daar geen kwessies.)

So, daar is 2 opsies:

  1. Aflaai en bou van hul daaglikse snapshot .

  2. Kry die kol vir jou werk wxWidgets installasie.

Ek het die 2de opsie om minder omslagtig wees, want ek wil nie so veel as moontlik my werk installasie te versteur. As jy nie weet hoe om te pleister op Windows, sien hierdie .

Op die heel minste, vir Windows, die kol sal die volgende lêers verander:

$(WX_WIDGETS_ROOT)/include/wx/glcanvas.h
$(WX_WIDGETS_ROOT)/include/wx/msw/glcanvas.h
$(WX_WIDGETS_ROOT)/src/msw/glcanvas.cpp

Na lap, heropstel die wxWidgets biblioteke.

Om multisampling in jou wxWidgets OpenGL program in staat stel, is klein veranderinge aan die kode vereis.

'n kenmerk lys moet geslaag word om die wxGLCanvas constructor:

int attribList[] = {WX_GL_RGBA,
                    WX_GL_DOUBLEBUFFER,
                    WX_GL_SAMPLE_BUFFERS, GL_TRUE, // Multi-sampling
                    WX_GL_DEPTH_SIZE, 16,
                    0, 0};

As jy reeds gebruik het 'n kenmerk lys, voeg dan die lyn met GL_SAMPLE_BUFFERS, GL_TRUE om dit te. Anders, voeg hierdie kenmerk lys definisie om jou kode.

verander dan jou wxGLCanvas constructor om hierdie kenmerk lys as 'n parameter:

myGLFrame::myGLFrame    // Derived from wxGLCanvas
(
    wxWindow *parent,
    wxWindowID id,
    const wxPoint& pos,
    const wxSize& size,
    long style,
    const wxString& name
)
: wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style, name, attribList)
{
    // ...
}

Na die wxGLCanvas element is geskep, multisampling aangeskakel is by verstek. Om te skakel of in staat stel dit na willekeur gebruik die verwante OpenGL noem:

glEnable(GL_MULTISAMPLE);
glDisable(GL_MULTISAMPLE);

Multisampling moet nou saamwerk met die wxWidgets OpenGL program. Hopelik, moet dit ondersteun word in die stabiele weergawe van wxWidgets gou, die maak van hierdie inligting irrelevant: -)

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top