我試圖使用glReadPixels方法在屏幕上對一個簡單的三角形進行顏色編碼,沒有任何二次渲染函數等,但它沒有給出好的結果。代碼:PyopenGL glReadPixels
import pygame as pg
from OpenGL.GL import *
pg.display.set_mode((500,500),pg.OPENGL)
glClearColor(0.5,0.0,0.5,0.0)
done=0
def first():
glColor3f(0.5,0.6,0.7)
glBegin(GL_TRIANGLES)
glVertex(0.0,0.0,0.0)
glVertex(1.0,0.0,0.0)
glVertex(0.0,1.0,0.0)
glEnd()
cl=0
clock=pg.time.Clock()
while not done:
for event in pg.event.get():
if event.type==pg.QUIT: done=1
elif event.type==pg.MOUSEBUTTONDOWN:
pos=pg.mouse.get_pos()
color=glReadPixels(pos[0],pos[1],1,1,GL_RGB,GL_FLOAT)
print color, pos[0], pos[1])
glClear(GL_COLOR_BUFFER_BIT)
first()
pg.display.flip()
clock.tick(20)
pg.quit()
但它總是給出相同的色彩輸出: [[[0.50196081 0 0.50196081]]] 288 217 我怎樣才能解決這個問題?
據我可以看到從代碼中,您正在讀回back buffer的這個_undefined_在這個時間點的內容。我不知道pygame的'mouse.get_pos()'應該如何工作,但我懷疑它沒有返回正確的OpenGL窗口座標與底部閣樓角落的原點。從給出的數字,在一個500x500的窗口中,假設身份變換和全視口,(288,217)只是背景,而不是三角形。 – derhass