小编Noa*_*oah的帖子

如何在 PyOpenGL 上创建一个可以对鼠标移动进行“透视旋转”的相机?

我正在创建一个第一人称视角 RPG,我想在移动鼠标时在 PyOpenGL 中旋转相机(就像其他一些游戏,如 Minecraft)。我可以使用什么功能来做到这一点以及如何做到这一点?

我尝试使用gluLookAt()但我不明白它是如何工作的,尽管我经历了不同的来源。我什至不知道它是否有帮助。

import sys,pygame
from OpenGL.GL import *
from OpenGL.GLU import *
cmddown = False
#...
keypress = pygame.key.get_pressed()#Move using WASD
    if keypress[pygame.K_w]:
        glTranslatef(0,0,0.1)
    if keypress[pygame.K_s]:
        glTranslatef(0,0,-0.1)
    if keypress[pygame.K_d]:
        glTranslatef(-0.1,0,0)
    if keypress[pygame.K_a]:
        glTranslatef(0.1,0,0)
    mouse_movement = pygame.mouse.get_rel()#Get mouse event
    #This is where the "look around" should be happen
    pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

python opengl pygame pyopengl opengl-compat

5
推荐指数
1
解决办法
4239
查看次数

如何在 PyOpenGL 中将 png 图像作为图像叠加层进行 blit?

我正在 PyOpenGL 中制作游戏,并希望将一些图像作为一些叠加(例如,暂停按钮)显示在屏幕上。我怎样才能做到这一点?

我试过使用glBitmap(),但它不起作用。

这就是我所拥有的:

pauseimg = pygame.image.load(path + "pause.png").convert_alpha()
def blit_image(x,y,w,h,img,r,g,b):
    glColor3f(r,g,b)
    glWindowPos2f(x,y)
    glBitmap(w,h,0,0,0,0,img)
blit_image(300,300,313,115,pauseimg,1,1,1)
Run Code Online (Sandbox Code Playgroud)

我预计它会 blit 图像,但它抛出了一个异常:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/OpenGL/latebind.py", line 41, in __call__
    return self._finalCall( *args, **named )
TypeError: 'NoneType' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".py", line 438, in <module>
    blit_image(300,300,313,115,pauseimg,1,1,1)
  File ".py", line 135, in blit_image
    glBitmap(w,h,0,0,0,0,img)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/OpenGL/latebind.py", line 45, in __call__
    return self._finalCall( *args, …
Run Code Online (Sandbox Code Playgroud)

python opengl pygame pyopengl opengl-compat

5
推荐指数
1
解决办法
1115
查看次数

全屏Pygame窗口期间无法使用系统热键

我正在尝试使用Pygame在Python中制作全屏游戏。我的问题是,在全屏模式下,我无法使用Command + Tab Mac系统组合键(已退出)。我也无法隐藏它。这是我的代码:

display = (1440,900)
pygame.init()
screen = pygame.display.set_mode(display, pygame.DOUBLEBUF | pygame.FULLSCREEN)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用pygame.display.iconify()隐藏和最小化窗口的方式来跳出程序,但是它不能在全屏模式下工作,因为它会创建一个全屏黑色窗口。我也不想在执行此操作时切换全屏。

python macos pygame

5
推荐指数
1
解决办法
99
查看次数

标签 统计

pygame ×3

python ×3

opengl ×2

opengl-compat ×2

pyopengl ×2

macos ×1