cocos2d-x 3D模型 抗锯齿方法

cocos2d-x 3D模型 抗锯齿方法,第1张

概述随着cocos2d-x对3D特性的支持,很多开发者开始尝试在自己的游戏中载入3D模型,不过最近有些开发者表示不能接受3D模型显示时边缘的锯齿现象,特别是在windows上看着会更明显,这里给大家提供一个方法在不同平台上解决这个问题。 Windows/Mac平台: 在cocos/platform/desktop/CCGLViewImpl.cpp 然后在GLViewImpl::initWithRect 随着cocos2d-x@H_502_2@对3D@H_502_2@特性的支持,很多开发者开始尝试在自己的游戏中载入3D@H_502_2@模型,不过最近有些开发者表示不能接受3D@H_502_2@模型显示时边缘的锯齿现象,特别是在windows@H_502_2@上看着会更明显,这里给大家提供一个方法在不同平台上解决这个问题。@H_502_2@

windows/Mac平台:
在@H_502_2@cocos/platform/desktop/CCGLVIEwImpl.cpp 然后在@H_502_2@GLVIEwImpl@H_502_2@::initWithRect函数中添加下面语句@H_502_2@@H_502_2@
glfwWindowHint(@H_502_2@GLFW_SAMPLES@H_502_2@@H_502_2@,4);4@H_502_2@是一个采样的等级,你可以输入2@H_502_2@,4@H_502_2@,8 @H_502_2@数值越大抗锯齿的效果越好,不过经过本人测试一般的androID@H_502_2@机器也就支持到4@H_502_2@再高就无法运行了。@H_502_2@

IOS平台:
找到工程目录下proj.ios_mac/ios/AppController.mm文件,然后找到下面这行代码
CCEAGLVIEw *eaglVIEw = [CCEAGLVIEw vIEwWithFrame: [window bounds]
修改 multiSampling: NO 为 multiSampling: YES
修改 numberOfSamples: 0 为 numberOfSamples: 4

AndroID平台:
首先,在cocos\platform\androID\java\src\org\cocos2dx\lib目录下找到Cocos2dxActivity.java文件,在文件头包含下面几项:@H_502_2@
import javax.microedition.khronos.egl.EGL10;@H_502_2@
import javax.microedition.khronos.egl.EGLConfig;@H_502_2@
import javax.microedition.khronos.egl.EGLdisplay;@H_502_2@
import androID.opengl.GLSurfaceVIEw.EGLConfigChooser;@H_502_2@
接下来,在Cocos2dxActivity@H_502_2@类的内部添加一个类 如下: @H_502_2@
public class BaseConfigChooser implements EGLConfigChooser {@H_502_2@
public BaseConfigChooser(){@H_502_2@
}@H_502_2@
public EGLConfig chooseConfig(EGL10 egl,EGLdisplay display){@H_502_2@
int CONfig_ATTRIBS[] = @H_502_2@
{ @H_502_2@
EGL10.EGL_RED_SIZE,5,@H_502_2@
EGL10.EGL_GREEN_SIZE,6,@H_502_2@
EGL10.EGL_BLUE_SIZE,@H_502_2@
EGL10.EGL_DEPTH_SIZE,16,@H_502_2@
EGL10.EGL_Alpha_SIZE,EGL10.EGL_DONT_CARE,@H_502_2@
EGL10.EGL_STENCIL_SIZE,@H_502_2@
EGL10.EGL_SURFACE_TYPE,EGL10.EGL_WINDOW_BIT,@H_502_2@
EGL10.EGL_SAMPLES,4,@H_502_2@
EGL10.EGL_NONE@H_502_2@
}; @H_502_2@
@H_502_2@
int[] num_config = new int[1]; @H_502_2@
egl.eglChooseConfig(display,CONfig_ATTRIBS,null,num_config); @H_502_2@
int numConfigs = num_config[0]; @H_502_2@
if (numConfigs <= 0) { @H_502_2@
throw new IllegalArgumentException("No configs match configSpec"); @H_502_2@
} @H_502_2@
EGLConfig[] configs = new EGLConfig[numConfigs]; @H_502_2@
egl.eglChooseConfig(display,configs,numConfigs,num_config); @H_502_2@
EGLConfig config = configs[0]; @H_502_2@
if (config == null) { @H_502_2@
throw new IllegalArgumentException("No config chosen"); @H_502_2@
} @H_502_2@
return config;@H_502_2@
}@H_502_2@
}@H_502_2@

@H_502_2@
然后,再找到 onCreateVIEw 函数,在函数内添加下面代码:@H_502_2@

@H_502_2@
glSurfaceVIEw.setEGLConfigChooser(new BaseConfigChooser());@H_502_2@

@H_502_2@
最后,打开Cocos2dxRenderer.java文件找到onSurfaceCreated函数添加下面代码:@H_502_2@

@H_502_2@
pGL10.glEnable(pGL10.GL_MulTISAMPLE);@H_502_2@

开启抗锯齿前后对比图:@H_502_2@

@H_502_2@

@H_502_2@@H_502_2@

@H_502_2@
最后提醒大家,开启抗锯齿后对性能影响比较大,请谨慎使用。@H_502_2@ 总结

以上是内存溢出为你收集整理的cocos2d-x 3D模型 抗锯齿方法全部内容,希望文章能够帮你解决cocos2d-x 3D模型 抗锯齿方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1037402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存