Fwd: wxPerl & multi sample anti aliasing
"bubnikv ." <[email protected]> Sun, 5 Jun 2016 22:51:33 +0200
| Newsgroups | gmane.comp.lang.perl.wxperl |
|---|---|
| Message-ID | <CAAE6Juz_Abva6JsVHgLPTHUnkTZv3+kuDzSyYjm=+Nnutb3w5A@mail.gmail.com> |
--94eb2c0436b006e1bf05348e1f7f
Content-Type: multipart/alternative; boundary=94eb2c0436b006e1ba05348e1f7d
--94eb2c0436b006e1ba05348e1f7d
Content-Type: text/plain; charset=UTF-8
Hello,
We are using wxPerl for the Slic3r software for 3d printing
http://www.slic3r.org
Would you please consider extending the Alien::Wx and Wx::GLCanvas packages
to support the OpenGL Multi Sample Anti Aliasing? My crude patches are
attached. It works for me and it is a sufficient solution to our customers
right now, but I am a rookie with Perl, so it is likely not a clean
solution.
The wxWidgets 3.0.3 is in a beta stage right now. The wxWidgets maintainers
claim, that the wxWidgets 3.1.0 are already in a better shape. Would you
please consider extending wxPerl to wxWidgets 3.1.0? I tried, but they seem
to break some backward compatibility and as I am not very familiar with
Perl and XS, I gave up on that myself as long as 3.0.3-beta fits my needs.
By the way, the code snippet to initialize the multi sample anti aliased
context in Slic3r looks like this. It is so complex to keep the code
compatible with and without the patched wxWidgets & Wx::GLCanvas.
# We can only enable multi sample anti aliasing wih wxWidgets 3.0.3 and
with a hacked Wx::GLCanvas,
# which exports some new WX_GL_XXX constants, namely
WX_GL_SAMPLE_BUFFERS and WX_GL_SAMPLES.
my $can_multisample =
Wx::wxVERSION >= 3.000003 &&
defined Wx::GLCanvas->can('WX_GL_SAMPLE_BUFFERS') &&
defined Wx::GLCanvas->can('WX_GL_SAMPLES');
my $attrib = [WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 24];
if ($can_multisample) {
# Request a window with multi sampled anti aliasing. This is a new
feature in Wx 3.0.3 (backported from 3.1.0).
# Use eval to avoid compilation, if the subs WX_GL_SAMPLE_BUFFERS
and WX_GL_SAMPLES are missing.
eval 'push(@$attrib, (WX_GL_SAMPLE_BUFFERS, 1, WX_GL_SAMPLES, 4));';
}
# wxWidgets expect the attrib list to be ended by zero.
push(@$attrib, 0);
# we request a depth buffer explicitely because it looks like it's not
created by
# default on Linux, causing transparency issues
my $self = $class->SUPER::new($parent, -1, Wx::wxDefaultPosition,
Wx::wxDefaultSize, 0, "", $attrib);
if (Wx::wxVERSION >= 3.000003) {
# Wx 3.0.3 contains an ugly hack to support some advanced OpenGL
attributes through the attribute list.
# The attribute list is transferred between the wxGLCanvas and
wxGLContext constructors using a single static array s_wglContextAttribs.
# Immediatelly force creation of the OpenGL context to consume the
static variable s_wglContextAttribs.
$self->GetContext();
}
Thanks, Vojtech
--94eb2c0436b006e1ba05348e1f7d
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr">Hello,</div><d=
iv dir=3D"ltr"><br></div><div dir=3D"ltr"><div>We are using wxPerl for the =
Slic3r software for 3d printing=C2=A0<a href=3D"http://www.slic3r.org/" tar=
get=3D"_blank">http://www.slic3r.org</a></div></div><div dir=3D"ltr"><div><=
br></div><div>Would you please consider extending the Alien::Wx and Wx::GLC=
anvas packages to support the OpenGL Multi Sample Anti Aliasing? My crude p=
atches are attached. It works for me and it is a sufficient solution to our=
customers right now, but I am a rookie with Perl, so it is likely not a cl=
ean solution.</div><div><br></div><div>The wxWidgets 3.0.3 is in a beta sta=
ge right now. The wxWidgets maintainers claim, that the wxWidgets 3.1.0 are=
already in a better shape. Would you please consider extending wxPerl to w=
xWidgets 3.1.0? I tried, but they seem to break some backward compatibility=
and as I am not very familiar with Perl and XS, I gave up on that myself a=
s long as 3.0.3-beta fits my needs.</div><div><br></div><div>By the way, th=
e code snippet to initialize the multi sample anti aliased context in Slic3=
r looks like this. It is so complex to keep the code compatible with and wi=
thout the patched wxWidgets & Wx::GLCanvas.</div><div><br></div><div><d=
iv>=C2=A0 =C2=A0 # We can only enable multi sample anti aliasing wih wxWidg=
ets 3.0.3 and with a hacked Wx::GLCanvas,</div><div>=C2=A0 =C2=A0 # which e=
xports some new WX_GL_XXX constants, namely WX_GL_SAMPLE_BUFFERS and WX_GL_=
SAMPLES.</div><div>=C2=A0 =C2=A0 my $can_multisample =3D</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 Wx::wxVERSION >=3D 3.000003 &&</div><div>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 defined Wx::GLCanvas->can('WX_GL_SAMPLE_=
BUFFERS') &&</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 defined Wx::=
GLCanvas->can('WX_GL_SAMPLES');</div><div>=C2=A0 =C2=A0 my $attr=
ib =3D [WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 24];</div><div>=
=C2=A0 =C2=A0 if ($can_multisample) {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
# Request a window with multi sampled anti aliasing. This is a new feature=
in Wx 3.0.3 (backported from 3.1.0).</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
# Use eval to avoid compilation, if the subs WX_GL_SAMPLE_BUFFERS and WX_G=
L_SAMPLES are missing.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 eval 'push=
(@$attrib, (WX_GL_SAMPLE_BUFFERS, 1, WX_GL_SAMPLES, 4));';</div><div>=
=C2=A0 =C2=A0 }</div><div>=C2=A0 =C2=A0 # wxWidgets expect the attrib list =
to be ended by zero.</div><div>=C2=A0 =C2=A0 push(@$attrib, 0);</div><div><=
br></div><div>=C2=A0 =C2=A0 # we request a depth buffer explicitely because=
it looks like it's not created by=C2=A0</div><div>=C2=A0 =C2=A0 # defa=
ult on Linux, causing transparency issues</div><div>=C2=A0 =C2=A0 my $self =
=3D $class->SUPER::new($parent, -1, Wx::wxDefaultPosition, Wx::wxDefault=
Size, 0, "", $attrib);</div><div>=C2=A0 =C2=A0 if (Wx::wxVERSION =
>=3D 3.000003) {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # Wx 3.0.3 contai=
ns an ugly hack to support some advanced OpenGL attributes through the attr=
ibute list.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # The attribute list is t=
ransferred between the wxGLCanvas and wxGLContext constructors using a sing=
le static array s_wglContextAttribs.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
# Immediatelly force creation of the OpenGL context to consume the static v=
ariable s_wglContextAttribs.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 $self-&g=
t;GetContext();</div><div>=C2=A0 =C2=A0 }</div></div><div><br></div><div><b=
r></div><div>Thanks, Vojtech</div><div><br></div></div>
</div><br></div>
--94eb2c0436b006e1ba05348e1f7d--
--94eb2c0436b006e1bf05348e1f7f
Content-Type: application/octet-stream;
name="Alien-wxWidgets-0.67-wx3.0.3-beta.patch"
Content-Disposition: attachment;
filename="Alien-wxWidgets-0.67-wx3.0.3-beta.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ioy0ug510
ZGlmZiAtck51IEFsaWVuLXd4V2lkZ2V0cy0wLjY3L0J1aWxkLlBMIEFsaWVuLXd4V2lkZ2V0cy0w
LjY3LVZvanRlY2gvQnVpbGQuUEwKLS0tIEFsaWVuLXd4V2lkZ2V0cy0wLjY3L0J1aWxkLlBMCTIw
MTUtMDMtMDkgMjI6Mzc6MTkuMDAwMDAwMDAwICswMTAwCisrKyBBbGllbi13eFdpZGdldHMtMC42
Ny1Wb2p0ZWNoL0J1aWxkLlBMCTIwMTYtMDYtMDIgMDk6MTE6MDEuNDM1NDQ4NjAwICswMjAwCkBA
IC0yMiw2ICsyMiw4IEBACiAgICAgJzMuMC4wJyAgICAgICAgID0+ICdwYXRjaGVzL2RhdGEtMy4w
LjAnLAogICAgICczLjAuMScgICAgICAgICA9PiAncGF0Y2hlcy9kYXRhLTMuMC4xJywKICAgICAn
My4wLjInICAgICAgICAgPT4gJ3BhdGNoZXMvZGF0YS0zLjAuMicsCisgICAgJzMuMC4zJyAgICAg
ICAgID0+ICdwYXRjaGVzL2RhdGEtMy4wLjMnLAorICAgICczLjEuMCcgICAgICAgICA9PiAncGF0
Y2hlcy9kYXRhLTMuMS4wJywKICAgICApOwogCiBteSAoJERFRkFVTFRfVkVSU0lPTiwgJERFRkFV
TFRfQVJDSElWRV9UWVBFKSA9IF9nZXRfZGVmYXVsdF93eHdpZGdldHNfdmVyc2lvbl9hbmRfdHlw
ZSgpOwpAQCAtMjg4LDcgKzI5MCw3IEBACiBzdWIgX2dldF9kZWZhdWx0X3d4d2lkZ2V0c192ZXJz
aW9uX2FuZF90eXBlIHsKICAgICAKICAgICAjIGRlZmF1bHQgdmVyc2lvbiBhbmQgYXJjaGl2ZSB0
eXBlCi0gICAgbXkgJGRlZnZlciA9ICczLjAuMic7CisgICAgbXkgJGRlZnZlciA9ICczLjAuMyc7
CiAgICAgbXkgJGRlZnR5cGUgPSAndGFyLmJ6Mic7CiAgICAgCiAgICAgaWYoICReTyA9fiAvXmxp
bnV4L2kpIHsKZGlmZiAtck51IEFsaWVuLXd4V2lkZ2V0cy0wLjY3L3BhdGNoZXMvZGF0YS0zLjAu
MyBBbGllbi13eFdpZGdldHMtMC42Ny1Wb2p0ZWNoL3BhdGNoZXMvZGF0YS0zLjAuMwotLS0gQWxp
ZW4td3hXaWRnZXRzLTAuNjcvcGF0Y2hlcy9kYXRhLTMuMC4zCTE5NzAtMDEtMDEgMDE6MDA6MDAu
MDAwMDAwMDAwICswMTAwCisrKyBBbGllbi13eFdpZGdldHMtMC42Ny1Wb2p0ZWNoL3BhdGNoZXMv
ZGF0YS0zLjAuMwkyMDE2LTA1LTI0IDE0OjQwOjA5LjM3NTI1MzEwMCArMDIwMApAQCAtMCwwICsx
LDI4IEBACitteSAkVkVSU0lPTiA9ICczLjAuMyc7CiskVVJMICAgfHw9ICJodHRwOi8vZ2l0aHVi
LmNvbS9kaXNjbmwvd3hXaWRnZXRzL2FyY2hpdmUiOworbXkgJEJBU0UgICAgPSAnd3hXaWRnZXRz
JzsKKyMgJFRZUEUgZnJvbSBCdWlsZC5QTAorCitteSBAY29tbW9uID0gcXcod3hXaWRnZXRzLTIu
OS4wLW1hZ2ljLnBhdGNoICk7CisKK215ICR3aW5zZXR1cHBhdGNoID0gKCAkRk9SQ0VfR1RYICkg
PyAnd3hNU1ctMy4wLjEtc2V0dXBfZ2N0eC5wYXRjaCcgOiAnd3hNU1ctMy4wLjEtc2V0dXAucGF0
Y2gnOworCit7ICAgCisgIG1zdyAgICAgPT4geyB1bmljb2RlID0+IFsgCisgICd3eE1TVy0zLjAu
MC1tYWtlZmlsZXMucGF0Y2gnLAorICAnd3hNU1ctMy4wLjEtZGVmcy5wYXRjaCcsCisgICR3aW5z
ZXR1cHBhdGNoLCAKKyAgQGNvbW1vbiAKKyAgXSwKKyAgICAgICAgICAgICAgIH0sCisgIAorICBt
YWMgICAgID0+IHsgdW5pY29kZSA9PiBbIEBjb21tb24gXSwKKyAgICAgICAgICAgICAgIH0sCisg
IHVuaXggICAgPT4geyB1bmljb2RlID0+IFsgQGNvbW1vbiBdLAorICAgICAgICAgICAgICAgfSwK
KyAgZGF0YSAgICA9PiB7IHVybCAgPT4gKCBzcHJpbnRmICclcy92JXMtYmV0YTEudGFyLmd6Jywg
JFVSTCwgJFZFUlNJT04pLAorICAgICAgICAgICAgICAgZGlyZWN0b3J5ID0+ICggc3ByaW50ZiAn
JXMtJXMtYmV0YTEnLCAkQkFTRSwgJFZFUlNJT04gKSwKKyAgICAgICAgICAgICAgIGFyY2hpdmUg
ICA9PiAoIHNwcmludGYgJ3Ylcy1iZXRhMS50YXIuZ3onLCAkVkVSU0lPTiApLAorICAgICAgICAg
ICAgICAgdmVyc2lvbiAgID0+ICRWRVJTSU9OLAorICAgICAgICAgICAgICAgfSwKKyAgfTsKZGlm
ZiAtck51IEFsaWVuLXd4V2lkZ2V0cy0wLjY3L3BhdGNoZXMvZGF0YS0zLjEuMCBBbGllbi13eFdp
ZGdldHMtMC42Ny1Wb2p0ZWNoL3BhdGNoZXMvZGF0YS0zLjEuMAotLS0gQWxpZW4td3hXaWRnZXRz
LTAuNjcvcGF0Y2hlcy9kYXRhLTMuMS4wCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw
MTAwCisrKyBBbGllbi13eFdpZGdldHMtMC42Ny1Wb2p0ZWNoL3BhdGNoZXMvZGF0YS0zLjEuMAky
MDE2LTA1LTI1IDA5OjAyOjA1LjE2OTE0NDkwMCArMDIwMApAQCAtMCwwICsxLDI4IEBACitteSAk
VkVSU0lPTiA9ICczLjEuMCc7CiskVVJMICAgfHw9ICJodHRwOi8vZ2l0aHViLmNvbS93eFdpZGdl
dHMvd3hXaWRnZXRzL3JlbGVhc2VzL2Rvd25sb2FkL3YzLjEuMCI7CitteSAkQkFTRSAgICA9ICd3
eFdpZGdldHMnOworIyAkVFlQRSBmcm9tIEJ1aWxkLlBMCisKK215IEBjb21tb24gPSBxdyh3eFdp
ZGdldHMtMi45LjAtbWFnaWMucGF0Y2ggKTsKKworbXkgJHdpbnNldHVwcGF0Y2ggPSAoICRGT1JD
RV9HVFggKSA/ICd3eE1TVy0zLjAuMS1zZXR1cF9nY3R4LnBhdGNoJyA6ICd3eE1TVy0zLjAuMS1z
ZXR1cC5wYXRjaCc7CisKK3sgICAKKyAgbXN3ICAgICA9PiB7IHVuaWNvZGUgPT4gWyAKKyMgICd3
eE1TVy0zLjAuMC1tYWtlZmlsZXMucGF0Y2gnLAorICAnd3hNU1ctMy4wLjEtZGVmcy5wYXRjaCcs
CisgICR3aW5zZXR1cHBhdGNoLCAKKyAgQGNvbW1vbiAKKyAgXSwKKyAgICAgICAgICAgICAgIH0s
CisgIAorICBtYWMgICAgID0+IHsgdW5pY29kZSA9PiBbIEBjb21tb24gXSwKKyAgICAgICAgICAg
ICAgIH0sCisgIHVuaXggICAgPT4geyB1bmljb2RlID0+IFsgQGNvbW1vbiBdLAorICAgICAgICAg
ICAgICAgfSwKKyAgZGF0YSAgICA9PiB7IHVybCAgPT4gKCBzcHJpbnRmICclcy8lcy0lcy4lcycs
ICRVUkwsICRCQVNFLCAkVkVSU0lPTiwgJFRZUEUgKSwKKyAgICAgICAgICAgICAgIGRpcmVjdG9y
eSA9PiAoIHNwcmludGYgJyVzLSVzJywgJEJBU0UsICRWRVJTSU9OICksCisgICAgICAgICAgICAg
ICBhcmNoaXZlICAgPT4gKCBzcHJpbnRmICclcy0lcy4lcycsICRCQVNFLCAkVkVSU0lPTiwgJFRZ
UEUgKSwKKyAgICAgICAgICAgICAgIHZlcnNpb24gICA9PiAkVkVSU0lPTiwKKyAgICAgICAgICAg
ICAgIH0sCisgIH07Cg==
--94eb2c0436b006e1bf05348e1f7f
Content-Type: application/octet-stream;
name="Wx-GLCanvas-0.09-wx3.0.3-MSAA.patch"
Content-Disposition: attachment;
filename="Wx-GLCanvas-0.09-wx3.0.3-MSAA.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ioy0ug5e1
ZGlmZiAtcnUgV3gtR0xDYW52YXMtMC4wOS9HTENhbnZhcy54cyBXeC1HTENhbnZhcy0wLjA5LVZv
anRlY2gvR0xDYW52YXMueHMKLS0tIFd4LUdMQ2FudmFzLTAuMDkvR0xDYW52YXMueHMJMjAwOC0x
MC0yNyAyMTo1MDo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrIFd4LUdMQ2FudmFzLTAuMDktVm9qdGVj
aC9HTENhbnZhcy54cwkyMDE2LTA2LTAyIDEwOjAzOjM3LjI1Nzg5NTUwMCArMDIwMApAQCAtODIs
NiArODIsMTMgQEAKICAgICAgICAgciggV1hfR0xfTUlOX0FDQ1VNX0dSRUVOICk7CiAgICAgICAg
IHIoIFdYX0dMX01JTl9BQ0NVTV9CTFVFICk7CiAgICAgICAgIHIoIFdYX0dMX01JTl9BQ0NVTV9B
TFBIQSApOworCisgICAgICAgIHIoIFdYX0dMX1NBTVBMRV9CVUZGRVJTICk7CisgICAgICAgIHIo
IFdYX0dMX1NBTVBMRVMgKTsKKyAgICAgICAgciggV1hfR0xfQ09SRV9QUk9GSUxFICk7CisgICAg
ICAgIHIoIFdYX0dMX01BSk9SX1ZFUlNJT04gKTsKKyAgICAgICAgciggV1hfR0xfTUlOT1JfVkVS
U0lPTiApOworCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpk
aWZmIC1ydSBXeC1HTENhbnZhcy0wLjA5L2xpYi9XeC9HTENhbnZhcy5wbSBXeC1HTENhbnZhcy0w
LjA5LVZvanRlY2gvbGliL1d4L0dMQ2FudmFzLnBtCi0tLSBXeC1HTENhbnZhcy0wLjA5L2xpYi9X
eC9HTENhbnZhcy5wbQkyMDA5LTA4LTExIDIxOjAyOjE4LjAwMDAwMDAwMCArMDIwMAorKysgV3gt
R0xDYW52YXMtMC4wOS1Wb2p0ZWNoL2xpYi9XeC9HTENhbnZhcy5wbQkyMDE2LTA1LTI0IDE4OjI0
OjAxLjg0NDc4MDcwMCArMDIwMApAQCAtMjIsNyArMjIsOSBAQAogICAgICAgIFdYX0dMX1NURVJF
TyBXWF9HTF9BVVhfQlVGRkVSUyBXWF9HTF9NSU5fUkVEIFdYX0dMX01JTl9HUkVFTgogICAgICAg
IFdYX0dMX01JTl9CTFVFIFdYX0dMX01JTl9BTFBIQSBXWF9HTF9ERVBUSF9TSVpFIFdYX0dMX1NU
RU5DSUxfU0laRQogICAgICAgIFdYX0dMX01JTl9BQ0NVTV9SRUQgV1hfR0xfTUlOX0FDQ1VNX0dS
RUVOIFdYX0dMX01JTl9BQ0NVTV9CTFVFCi0gICAgICAgV1hfR0xfTUlOX0FDQ1VNX0FMUEhBKSAp
OworICAgICAgIFdYX0dMX01JTl9BQ0NVTV9BTFBIQQorICAgICAgIFdYX0dMX1NBTVBMRV9CVUZG
RVJTIFdYX0dMX1NBTVBMRVMgCisgICAgICAgV1hfR0xfQ09SRV9QUk9GSUxFIFdYX0dMX01BSk9S
X1ZFUlNJT04gV1hfR0xfTUlOT1JfVkVSU0lPTikgKTsKIG91ciAlRVhQT1JUX1RBR1MgPQogICAo
IGFsbCAgICAgICAgPT4gXEBFWFBPUlRfT0ssCiAgICAgZXZlcnl0aGluZyA9PiBcQEVYUE9SVF9P
SywK
--94eb2c0436b006e1bf05348e1f7f--