《OpenGL ES 2.0 Programming Guide》第11章“最简单的MSAA”示例代码【C语言版】

简介: 《OpenGL ES 2.0 Programming Guide》第11章“最简单的MSAA”示例代码【C语言版】

由于《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);

原图:

image.png

效果图:

image.png



目录
相关文章
|
5月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
53 0
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
342 0
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
221 0
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
173 0
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
86 0
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
84 0
|
Java API 数据安全/隐私保护
Opengl ES之矩阵变换(上)
Opengl ES连载系列
83 0
|
存储
Opengl ES之踩坑记
Opengl ES之连载系列
91 0
|
存储 编解码 算法
Opengl ES之RGB转NV21
Opengl ES连载系列
116 0
|
并行计算 C++
Opengl ES之YUV数据渲染
Opengl ES连载系列
131 0