我正在使用这些规格的EGLConfig:
lock
着色器:
EGL10.EGL_RED_SIZE, 5,
EGL10.EGL_GREEN_SIZE, 6,
EGL10.EGL_BLUE_SIZE, 5,
EGL10.EGL_DEPTH_SIZE, 16,
EGL10.EGL_RENDERABLE_TYPE, 4,
EGL10.EGL_SAMPLE_BUFFERS, 1,
EGL10.EGL_SAMPLES, 4,
onSurfaceCreated:
private final static String vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
"}";
private final static String fragmentShaderCode =
"precision mediump float;" +
"uniform vec4 vColor;" +
"void main() {" +
" gl_FragColor = vColor;" +
"}";
onDrawFrame:
GLES20.glClearColor(1f, 1f, 1f, 1f);
// Initialising shapes
实际问题是形状颜色不牢固,这种情况发生在整个屏幕区域(有更亮的像素):
真彩色是0.55f,0.8f,0.3f。
答案 0 :(得分:0)
OpenGL默认在渲染输出上执行抖动。当输出缓冲区的颜色深度相对较低时,这一点尤为明显,就像RGB565配置代码请求的情况一样。
要禁用抖动,请在初始化OpenGL状态时添加此调用,例如在onSurfaceCreated()
:
GLES20.glDisable(GLES20.GL_DITHER);
抖动的目的当然是为了提高视觉质量。除非您要求输出颜色完全准确/均匀,否则启用抖动可能会为您提供更好的视觉效果。