我在PyOpenGL中使用GLES2和EGL,并且正在调用glClearColor(0.0, 0.0, 0.0, 1.0)
。在glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
之后,我将清除的颜色值读入缓冲区,并注意到alpha值被设置为-1,而不是255 [(2 ^ 8-1)* 1]。溢出的原因可能是什么?
系统:带有Mali400 GPU的NanoPi M1 Plus。
代码:
glClearColor(0.0, 0.0, 0.0, 1.0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
eglSwapBuffers(display, surface)
buffer = arrays.GLcharArray.asArray(np.empty(1000 * 2 * 4, np.ubyte))
print("\nBuffer before : ", buffer[:20])
glReadPixels(0, 0, 1000, 2, GL_RGBA, GL_UNSIGNED_BYTE, buffer)
print("Buffer after: ", buffer[0:20])
输出:
Buffer before : [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
Buffer after: [ 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1]
编辑:
所有渠道均会出现此问题:glClearColor(1.0,1.0,1.0,1.0)
给了我[[-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]
]的缓冲区
我在PyOpenGL中使用GLES2和EGL,并且我在调用glClearColor(0.0,0.0,0.0,1.0)。在glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)之后,我将清除的颜色值读入缓冲区...
您将1.0
作为alpha通道值提供给glClearColor。当您将像素读回为GL_UNSIGNED_BYTE
时,该通道将获得255。但是255作为无符号字节与-1作为有符号字节具有相同的位模式。也许GLcharArray将字节解释为带符号,您应该使用GLubyteArray。