gpt4 book ai didi

python - glClearColor 返回负值? (溢出?)

转载 作者:行者123 更新时间:2023-12-04 10:03:37 26 4
gpt4 key购买 nike

我正在将 GLES2 和 EGL 与 PyOpenGL 一起使用,我正在调用 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]

编辑:

所有 channel 都会出现问题: 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]

最佳答案

你给了 1.0作为 glClearColor 的 alpha channel 值。当您将像素读回 GL_UNSIGNED_BYTE 时您将获得该 channel 的 255。但是作为无符号字节的 255 与作为有符号字节的 -1 具有相同的位模式。也许 GLcharArray 将字节解释为有符号的,您应该使用 GLubyteArray。

关于python - glClearColor 返回负值? (溢出?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61698237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com