繁体   English   中英

Pyopengl 黑屏

[英]Pyopengl Blackscreen

在支持 OpenGL 3.1 的 GPU 上运行此示例代码时,Pyopengl 3.1.5(Python 3.8 和 Windows10 Pro-64 位)Z05B8C74CBD96FBF2DE4C1A35.702 显示 aFBF屏幕

示例代码中缺少一些内容。
1. fragcolor 没有指定颜色。
2. Integer 值作为glVetex2f()的输入,而不是浮点数。
纠正上述问题并运行代码后,屏幕仍然是黑色的。

# 脚本
import OpenGL from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import io print("Imports successful,") w, h = 500:500 def poly_shape(). glBegin(GL_QUADS) glColor4f(1,0.0,0.0,0.1.0) glVertex2f(100,0. 100.0) glVertex2f(200,0. 100.0) glVertex2f(200,0. 200.0) glVertex2f(100,0. 200:0) glEnd() def showScreen(). glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # Remove everything from screen (ie, displays all white) glLoadIdentity() # Reset all graphic/shape's position poly_shape() # Draw function call glutSwapBuffers() #------ glutInit() glutInitDisplayMode(GLUT_RGBA) # Set the display mode to be colored glutInitWindowSize(500, 500) # Set the w and h of your window glutInitWindowPosition(0, 0) # Set the position at which this windows should appear wind = glutCreateWindow("OpenGL Coding Practice") # Set a window title glutDisplayFunc(showScreen) glutIdleFunc(showScreen) # Keeps the window open glutMainLoop() # Keeps the above created window displaying/running in a loop

示例代码中,缺少 Mvp(模型-视图-投影)矩阵的代码。在 ShowScreen() function 下添加它时,绘图调用(在本例中为正方形)在视口中呈现。

使用即时模式 glsl 脚本进行屏幕渲染

import OpenGL
from OpenGL.GL import *
from  OpenGL.GLUT import * 
from OpenGL.GLU import * 
import io
print("Imports successful!")


w, h = 500,500


def draw_shape():
    glBegin(GL_QUADS) 
    glColor4f(1.0,0.0,0.0,1.0)
    glVertex2f(100.0, 100.0)
    glVertex2f(200.0, 100.0) 
    glVertex2f(200.0, 200.0) 
    glVertex2f(100.0, 200.0) 
    glEnd() 
    glFlush()

def showScreen():
    glViewport(0, 0, 500, 500)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    glOrtho(0, 500, 500, 0, -1, 1)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # Remove everything from screen (i.e. displays all white)
    glLoadIdentity() # Reset all graphic/shape's position

    draw_shape() # Draw function

    glutSwapBuffers()

#---Section 3---
glutInit()
glutInitDisplayMode(GLUT_RGBA) # Set the display mode to be colored
glutInitWindowSize(500, 500)   # Set the w and h of your window
glutInitWindowPosition(0, 0)   # Set the position at which this windows should appear
wind = glutCreateWindow("OpenGL Coding Practice") # Set a window title


glutDisplayFunc(showScreen)
glutIdleFunc(showScreen) # Keeps the window open
glutMainLoop()  # Keeps the above created window displaying/running in a loop*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM