我有一个关于具有纹理映射的圆的问题。我的代码运行良好,但我没有反边缘,所以它不光滑,看起来不好。我现在已经阅读了大约3个小时并找到了一些解决方案,但我不知道如何在我的代码中实现它们。有两种解决方案听起来不错。
首先是模糊的纹理,应该绑定而不是非模糊,以获得平滑的边缘。
其次,使用不透明度在边缘上添加颜色顶点以获得平滑边缘。我目前的绘制功能如下所示:
CC_NODE_DRAW_SETUP();
[self.shaderProgram use];
ccGLBindTexture2D( _texture.name );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
ccGLBlendFunc( _blendFunc.src, _blendFunc.dst);
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords );
// Send the texture coordinates to OpenGL
glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, _textCoords);
// Send the polygon coordinates to OpenGL
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, _triangleFanPos);
// Draw it
glDrawArrays(GL_TRIANGLE_FAN, 0, _numOfSegements+2);
我目前正在使用cococs2d版本3.我问了一个类似的问题,发现只有在cocos2d上启用多重采样的解决方案,但这会将我的fps打破到30。
所以也许有人可以帮助我。