回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用pygame和pyopengl,在主窗口中我有两个视口
一个大地图和一个小地图(都呈现相同的框架)。我需要两个贴图围绕一个不是0,0,0的中心旋转(假设我需要旋转的中心是-130,0,60,这需要是一个常量点)</p>
<p>我还需要一个视图来查看距离<code>glTranslatef(0, 0, -1000)</code>
第二个视图是<code>glTranslatef(1, 1, -200)</code>两个距离都是常数</p>
<p>我试着用</p>
<pre><code>gluLookAt()
glOrtho()
</code></pre>
<p>但它不会改变旋转。。。。大约0,0,0
或者我可能用错了。你知道吗</p>
<p>代码如下所示:</p>
<pre><code>pygame.init()
display = (1700, 1000)
pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
gluPerspective(50, (display[0] / display[1]), 0.1, 5000)
glTranslatef(0, 0, -1000) # this is the view distance i want from map 1
while True:
##### i use this function to zoom in and out with mouse Wheel
##### also the zoom in/out zooms to 0,0,0 and i need (-130,0,60)
if move_camera_distance:
if zoom_in:
glScalef(0.8,0.8,0.8)
elif zoom_out:
glScalef(1.2, 1.2, 1.2)
move_camera_distance = False
zoom_in = False
zoom_out = False
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
###### Map 1
###### Need to rotate around (-130,0,60)
###### distance from camera need to be (0,0,-1000)
glViewport(1, 1, display[0], display[1]) # splits the screen
glCallList(obj.gl_list)
DrawBuffer(bufferObj, noPoints, noCirclePoints, noCrossPoints)
###### Map 2
###### Need to rotate around (-130,0,60)
###### distance from camera need to be (0,0,-300)
glViewport(1300, 650, 400, 400) # splits the screen
glCallList(obj.gl_list)
DrawBuffer(bufferObj, noPoints, noCirclePoints, noCrossPoints)
pygame.display.flip()
pygame.time.wait(10)
</code></pre>
<p>我得到的输出是两个贴图,都是围绕0,0,0旋转的,都是从(0,0,-1000)的距离开始的,如果我在While循环中改变任何东西,它们都会一起改变。
谢谢你的帮助。你知道吗</p>