gl = canvas.getContext("experimental-webgl", { antialias: true });
我的简单问题是:如何通过Emscripten C ++将此选项设置为asm.js编译器?我不想通过自定义着色器代码实现我自己的抗锯齿。
答案 0 :(得分:2)
在SDL中,您可以通过SDL_GL_MULTISAMPLEBUFFERS设置启用抗锯齿功能。像这样:
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); // enable MULTISAMPLE
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2); // can be 2, 4, 8 or 16
SDL_SetVideoMode(...)
此本机代码将为gl上下文启用antialias。看看library_sdl.js:
// in makeSurface function
var webGLContextAttributes = {
antialias: ((SDL.glAttributes[13 /*SDL_GL_MULTISAMPLEBUFFERS*/] != 0) && (SDL.glAttributes[14 /*SDL_GL_MULTISAMPLESAMPLES*/] > 1)),
depth: (SDL.glAttributes[6 /*SDL_GL_DEPTH_SIZE*/] > 0),
stencil: (SDL.glAttributes[7 /*SDL_GL_STENCIL_SIZE*/] > 0)
};
答案 1 :(得分:1)
如果使用SDL,如另一个答案所述,您只需调用以下内容:
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0 or 1);
如果使用GLUT,则必须使用/不使用glutInitDisplayMode()
来调用GLUT_MULTISAMPLE
。
如果使用EGL,唯一的选择是强制将构建的javascript代码从_glutInitDisplayMode(146);
更改为_glutInitDisplayMode(18);
,因为eglCreateContext()
只是在内部使用GLUT命令。