作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何在 iPhone 上使用 openGl 绘制实心圆?
我找到了很多解决方案,但没有一个有效。可能是因为有很多方法可以做到这一点。但是代码最短的方法是什么?
最佳答案
要获得真正平滑的圆,您需要自定义片段着色器。例如,下面的顶点着色器:
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
varying vec2 textureCoordinate;
void main()
{
gl_Position = position;
textureCoordinate = inputTextureCoordinate.xy;
}
和片段着色器:
varying highp vec2 textureCoordinate;
const highp vec2 center = vec2(0.5, 0.5);
const highp float radius = 0.5;
void main()
{
highp float distanceFromCenter = distance(center, textureCoordinate);
lowp float checkForPresenceWithinCircle = step(distanceFromCenter, radius);
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * checkForPresenceWithinCircle;
}
将在您绘制到屏幕的正方形内绘制一个光滑的红色圆圈。您需要将正方形的顶点提供给 position
属性,并为 inputTextureCoordinate
属性提供 X 和 Y 范围从 0.0 到 1.0 的坐标,但这将绘制一个在您的视口(viewport)分辨率允许的范围内尽可能锐利的圆圈,并且这样做得非常快。
关于ios - 如何在 iPhone 上使用 OpenGL ES 绘制实心圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452729/
我是一名优秀的程序员,十分优秀!