panda3d实时打印帧率完整代码要导入所有必要的库
以下是使用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()
这里导入了ShowBase和Task类,它们都是Panda3D中常用的类。MyApp继承自ShowBase,并在__init__方法中创建了帧率计时器和帧率显示。setup_frame_rate_counter()方法创建了帧率计时器并注册了一个更新回调函数,这个回调函数会在每帧被调用。create_text_node()方法创建了一个TextNode对象,并设置了显示样式。update_frame_rate_counter()方法在每帧被调用,更新了帧率计数器并检查是否需要更新帧率显示。
这个代码会在窗口左上角实时显示帧率,类似于这样:
FPS: 60.00
``
原文地址: https://www.cveoy.top/t/topic/hsKS 著作权归作者所有。请勿转载和采集!