cocos2d-x 3D模型 抗锯齿方法
发布时间:2020-12-14 20:15:57 所属栏目:百科 来源:网络整理
导读:随着 cocos2d-x 对 3D 特性的支持,很多开发者开始尝试在自己的游戏中载入 3D 模型,不过最近有些开发者表示不能接受 3D 模型显示时边缘的锯齿现象,特别是在 windows 上看着会更明显,这里给大家提供一个方法在不同平台上解决这个问题。 Windows/Mac平台:
随着cocos2d-x对3D特性的支持,很多开发者开始尝试在自己的游戏中载入3D模型,不过最近有些开发者表示不能接受3D模型显示时边缘的锯齿现象,特别是在windows上看着会更明显,这里给大家提供一个方法在不同平台上解决这个问题。
Windows/Mac平台: 在cocos/platform/desktop/CCGLViewImpl.cpp 然后在GLViewImpl::initWithRect函数中添加下面语句 glfwWindowHint(GLFW_SAMPLES,4);4是一个采样的等级,你可以输入2,4,8 数值越大抗锯齿的效果越好,不过经过本人测试一般的android机器也就支持到4再高就无法运行了。 IOS平台: 找到工程目录下proj.ios_mac/ios/AppController.mm文件,然后找到下面这行代码 CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds] 修改 multiSampling: NO 为 multiSampling: YES 修改 numberOfSamples: 0 为 numberOfSamples: 4 Android平台: 首先,在cocosplatformandroidjavasrcorgcocos2dxlib目录下找到Cocos2dxActivity.java文件,在文件头包含下面几项: import javax.microedition.khronos.egl.EGL10; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.egl.EGLDisplay; import android.opengl.GLSurfaceView.EGLConfigChooser; 接下来,在Cocos2dxActivity类的内部添加一个类 如下: public class BaseConfigChooser implements EGLConfigChooser { public BaseConfigChooser(){ } public EGLConfig chooseConfig(EGL10 egl,EGLDisplay display){ int CONFIG_ATTRIBS[] = { EGL10.EGL_RED_SIZE,5, EGL10.EGL_GREEN_SIZE,6, EGL10.EGL_BLUE_SIZE, EGL10.EGL_DEPTH_SIZE,16, EGL10.EGL_ALPHA_SIZE,EGL10.EGL_DONT_CARE, EGL10.EGL_STENCIL_SIZE, EGL10.EGL_SURFACE_TYPE,EGL10.EGL_WINDOW_BIT, EGL10.EGL_SAMPLES,4, EGL10.EGL_NONE }; int[] num_config = new int[1]; egl.eglChooseConfig(display,CONFIG_ATTRIBS,null,num_config); int numConfigs = num_config[0]; if (numConfigs <= 0) { throw new IllegalArgumentException("No configs match configSpec"); } EGLConfig[] configs = new EGLConfig[numConfigs]; egl.eglChooseConfig(display,configs,numConfigs,num_config); EGLConfig config = configs[0]; if (config == null) { throw new IllegalArgumentException("No config chosen"); } return config; } } 然后,再找到 onCreateView 函数,在函数内添加下面代码: glSurfaceView.setEGLConfigChooser(new BaseConfigChooser()); 最后,打开Cocos2dxRenderer.java文件找到onSurfaceCreated函数添加下面代码: pGL10.glEnable(pGL10.GL_MULTISAMPLE); 开启抗锯齿前后对比图: 最后提醒大家,开启抗锯齿后对性能影响比较大,请谨慎使用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |