[英]How to enable multisampling for a wxWidgets OpenGL program?
我终于使用了我的wxWidgets OpenGL程序进行Multisampling。 现在有点乱,但这是如何:
wxWidgets目前在其稳定版本中没有多重采样支持(此时的最新版本为2.8.8 )。 但是,它可以作为补丁,也可以通过他们的每日快照获得。 (后者令人振奋,因为这意味着补丁已被接受,如果没有问题,应该出现在以后的稳定版本中。)
所以,有两个选择:
我发现第二个选项不那么麻烦,因为我不想尽可能地打扰我的工作装置。 如果您不知道如何在Windows上进行修补,请参阅此内容 。
至少,对于Windows,补丁将修改以下文件:
$(WX_WIDGETS_ROOT)/include/wx/glcanvas.h
$(WX_WIDGETS_ROOT)/include/wx/msw/glcanvas.h
$(WX_WIDGETS_ROOT)/src/msw/glcanvas.cpp
修补后, 重新编译 wxWidgets库。
要在wxWidgets OpenGL程序中启用多重采样,需要对代码进行微小更改。
需要将属性列表传递给wxGLCanvas构造函数:
int attribList[] = {WX_GL_RGBA,
WX_GL_DOUBLEBUFFER,
WX_GL_SAMPLE_BUFFERS, GL_TRUE, // Multi-sampling
WX_GL_DEPTH_SIZE, 16,
0, 0};
如果您已经在使用属性列表,则将GL_SAMPLE_BUFFERS, GL_TRUE
行添加到其中。 否则,将此属性列表定义添加到您的代码中。
然后修改wxGLCanvas构造函数以将此属性列表作为参数:
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)
{
// ...
}
创建wxGLCanvas元素后,默认情况下会启用多重采样。 要随意禁用或启用它,请使用相关的OpenGL调用:
glEnable(GL_MULTISAMPLE);
glDisable(GL_MULTISAMPLE);
多重采样现在应该与wxWidgets OpenGL程序一起使用。 希望它很快就会在wxWidgets的稳定版本中得到支持,使这些信息无关紧要:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.