我想輸出一個正方形,並得到一個相當扭曲的菱形。像這樣,OpenGL輸出失真(可能不會偏移到中心?)
雖然我可以告訴大家,其實這是我本來打算立方體,該立方體是奇怪的扭曲。在我自己創建一個簡單的3D投影程序的過程中,當我缺少2D點到屏幕中間的偏移量時,我發現了一個類似的問題,但是我知道沒有這種方法可以將此偏移量通知給OpenGL ...
對於任何人誰可能想知道,我現在的相機對象看起來像[在Python]:
class Camera:
def __init__(self,x,y,z,fov=45,zNear=0.1,zFar=50):
self.x,self.y,self.z = x,y,z
self.pitch,self.yaw,self.roll = 0,0,0
glMatrixMode(GL_PROJECTION)
gluPerspective(fov, 1, zNear, zFar)
def __goto__(self,x,y,z,pitch,yaw,roll):
print "loc:",x,y,z
print "ang:",pitch,yaw,roll
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glRotatef(pitch,1,0,0)
glRotatef(yaw,0,1,0)
glRotatef(roll,0,0,1)
glTranslatef(-x,-y,-z)
def __flushloc__(self):
self.__goto__(self.x,self.y,self.z,self.pitch,self.yaw,self.roll)
與立方體正在呈現以下方式:
class Cube:
def __init__(self,x,y,z,width):
self.vertices=[]
for x in [x,x+width]:
for y in [y,y+width]:
for z in [z,z+width]:
self.vertices.append((x,y,z))
self.faces = [
[0,1,3,2],
[4,5,7,6],
[0,2,6,4],
[1,3,7,5],
[0,1,5,4],
[2,3,7,6]]
def __render__(self):
glBegin(GL_QUADS)
for face in self.faces:
for vertex in face:
glVertex3fv(self.vertices[vertex])
glEnd()
也許我還要提到的是給定的窗口是400px×400px,因此縱橫比是1.
我要問,這是我自己的愚蠢通常原來是我的問題的根源。正如你剛剛證明的,我可能不應該在堆棧溢出。實際上沒有變形,只是由你指出的重疊產生的極其奇特的一組頂點。 –
可能我只是說,非常感謝你... –
不愚蠢,只是學習:)混淆變量名稱很容易在Python中完成,所以不用擔心!我想大多數棉絨都不會發現這個問題;把它放在SO上是一個快速的方法來獲得一些關於來源的眼球並找到你的問題。 – wildwilhelm