如何在 Python 和 OpenGL 中使用 glReadPixels?

如何使用 glReadPixels() 获取像素颜色的值?我做了很多尝试,但得到了错误的价值。


我的背景颜色是蓝色(0,1,1),我画了一个边界颜色为红色(1,0,0)的圆圈,我想获得任何边界点的颜色。所以它必须给我红色。但我得到了背景颜色。


这是我在 Python3 和 OpenGL 中的代码


from OpenGL.GLU import *

from OpenGL.GLUT import *

import time

from  math import *

import numpy

import sys


def init():


    glClearColor(0.0,1.0,1.0,0.0)

    glClear(GL_COLOR_BUFFER_BIT)

    glPointSize(3.0)

    glMatrixMode(GL_PROJECTION)

    glLoadIdentity()

    gluOrtho2D(0.0,640.0,0.0,640.0)


def circle():


    for i in range(361):

        m=float(50*cos(i*pi/180.0))+320

        n=float(50*sin(i*pi/180.0))+320

        setpixc(m,n)


    print(m,n)

    redinput()


def redinput():


    global x,y

    x=int(input("enter x:"))

    y=int(input("enter y:"))

    setpixc(x,y)

    pixel=[]

    c=glReadPixels(x,y,1.0,1.0,GL_RGB,GL_UNSIGNED_BYTE,None)

    print(c)

    string_pixels=numpy_pixel.tolist()

    print(string_pixels)


def setpixc(xcor,ycor):


    glBegin(GL_POINTS)

    glColor3f(1.0,0.0,0.0)

    glVertex2f(xcor,ycor)

    glEnd()

    glFlush()


def Display():


    circle()

    print("hello")


def main():


    glutInit(sys.argv)


    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)

    glutInitWindowSize(600,600)

    glutInitWindowPosition(10,10)

    glutCreateWindow("line-dda")


    glutDisplayFunc(Display)


    init()

    glutMainLoop()


main()


尚方宝剑之说
浏览 228回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python