Я попытался использовать метод 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,50196081 0.]]] 288 217 Как я могу это исправить?
Насколько я могу видеть из кода, вы читаете содержимое заднего буфера, который _undefined_ на данный момент времени. Я не знаю, как должен работать pygame 'mouse.get_pos()', но я подозреваю, что он не возвращает правильные координаты окон OpenGL с началом в нижнем углу лофта. Из приведенных чисел, в окне 500x500 и при принятии преобразований идентичности и полного окна просмотра (288,217) является только фоном, а не треугольником. – derhass