由于《OpenGL ES 2.0 Programming Guide》原书第11章的MultiSample示例代码是错误的,遂自己实现了一份C语言版本的,希望能够帮助到同样喜欢OpenGL ES 2.0的同学。
废话不多说,直接上代码:
第一步,修改 esCreateWindows 的 flags
int main ( int argc, char *argv[] )
{
ESContext esContext;
UserData userData;
esInitContext ( &esContext );
esContext.userData = &userData;
// ☆
esCreateWindow ( &esContext, "MipMap 2D", 640, 480, ES_WINDOW_RGB|ES_WINDOW_MULTISAMPLE);
if ( !Init ( &esContext ) )
return 0;
esRegisterDrawFunc ( &esContext, Draw );
esMainLoop ( &esContext );
ShutDown ( &esContext );
}
第二步,修改esUtil.c
EGLint attribList[] =
{
EGL_RED_SIZE, 5,
EGL_GREEN_SIZE, 6,
EGL_BLUE_SIZE, 5,
EGL_ALPHA_SIZE, (flags & ES_WINDOW_ALPHA) ? 8 : EGL_DONT_CARE,
EGL_DEPTH_SIZE, (flags & ES_WINDOW_DEPTH) ? 8 : EGL_DONT_CARE,
EGL_STENCIL_SIZE, (flags & ES_WINDOW_STENCIL) ? 8 : EGL_DONT_CARE,
EGL_SAMPLE_BUFFERS, (flags & ES_WINDOW_MULTISAMPLE) ? 1 : 0,
EGL_SAMPLES, 4,// ☆
EGL_NONE
};
第三步:在MipMap.c的 init 方法添加以下代码
//glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE);
glEnable(GL_SAMPLE_COVERAGE);
glSampleCoverage(.5, FALSE);
原图:
效果图: