Я не понимаю, как работает glPerspective. Теоретически я знаю, что он делает, но меня это смущает, когда я пытаюсь его использовать.
Вот мой код (я использовал Pygame для создания окна):
import pygame, sys
from OpenGL.GL import *
from OpenGL.GLU import *
pygame.init()
clock = pygame.time.Clock()
display = (800,600)
screen = pygame.display.set_mode(display,pygame.DOUBLEBUF|pygame.OPENGL)
# Perspective
gluPerspective(0, (display[0]/display[1]),0.1,50.0)
# Transformations
glScalef(0.5,0.5,0.5)
glTranslatef(0.0,0.0,0.0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glBegin(GL_POLYGON)
glVertex3f(-1.0,-1.0,0.0)
glVertex3f(1.0,-1.0,0.0)
glVertex3f(0.0,1.0,0.0)
glEnd()
pygame.display.flip()
clock.tick(120)
Есть 2 c вещей, которые меня не устраивают:
Я могу видеть многоугольник, только когда поле обзора равно 0; он исчезает при любом более высоком значении, даже примерно 0,001. Разве не должно быть меньше? Обычно меня это смущает, разве значение fov, равное 0, не означает, что мы ничего не видим?
Я установил диапазон отсечения от 0,1 до 50, поэтому в текущем примере нарисованный многоугольник не должен исчезнуть, так как он находится слишком близко. Я даже установил для glTranslatef значение 0 для всех размеров, чтобы убедиться, что он ниже нижнего диапазона отсечения. Но это все равно показано.
Заранее большое спасибо!