以下是使用Panda3D实时打印帧率的完整代码,包括必要的库导入:

from direct.showbase.ShowBase import ShowBase
from direct.task import Task

class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        
        # 设置帧率计时器
        self.frame_rate_interval = 0.5
        self.frame_rate_num_frames = 0
        self.frame_rate_accumulated_time = 0.0
        self.frame_rate_text = None
        
        # 开始帧率计时器
        self.setup_frame_rate_counter()
        
    def setup_frame_rate_counter(self):
        # 创建帧率计时器
        self.frame_rate_text = self.create_text_node()
        self.frame_rate_text.set_pos(-1.3, 0.95)
        self.frame_rate_text.set_align(self.frame_rate_text.A_left)
        self.frame_rate_text.set_text("FPS: 0")
        
        # 注册帧率更新回调
        self.taskMgr.add(self.update_frame_rate_counter, "update_frame_rate_counter")
        
    def create_text_node(self):
        # 创建TextNode对象
        text_node = TextNode("frame_rate_text")
        text_node.set_text("")
        text_node.set_align(TextNode.A_left)
        text_node.set_font(self.loader.load_font("arial.ttf"))
        text_node.set_text_color((1, 1, 1, 1))
        text_node.set_shadow_color((0, 0, 0, 1))
        text_node.set_shadow(0.05, 0.05)
        text_node.set_shadow_offset((-0.05, -0.05))
        text_node_path = aspect2d.attach_new_node(text_node)
        return text_node
        
    def update_frame_rate_counter(self, task):
        # 更新帧率计数器
        dt = globalClock.get_dt()
        self.frame_rate_accumulated_time += dt
        self.frame_rate_num_frames += 1
        
        # 检查是否需要更新帧率显示
        if self.frame_rate_accumulated_time > self.frame_rate_interval:
            fps = self.frame_rate_num_frames / self.frame_rate_accumulated_time
            self.frame_rate_text.set_text("FPS: %.2f" % fps)
            self.frame_rate_accumulated_time = 0.0
            self.frame_rate_num_frames = 0
            
        return Task.cont
        
app = MyApp()
app.run()

这里导入了ShowBaseTask类,它们都是Panda3D中常用的类。MyApp继承自ShowBase,并在__init__方法中创建了帧率计时器和帧率显示。setup_frame_rate_counter()方法创建了帧率计时器并注册了一个更新回调函数,这个回调函数会在每帧被调用。create_text_node()方法创建了一个TextNode对象,并设置了显示样式。update_frame_rate_counter()方法在每帧被调用,更新了帧率计数器并检查是否需要更新帧率显示。

这个代码会在窗口左上角实时显示帧率,类似于这样:

FPS: 60.00
``
panda3d实时打印帧率完整代码要导入所有必要的库

原文地址: https://www.cveoy.top/t/topic/hsKS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录