| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import sys
- import pytest
- from panda3d import core
- from direct.showbase.ShowBase import ShowBase
- @pytest.fixture
- def base():
- base = ShowBase(windowType='none')
- yield base
- base.destroy()
- @pytest.fixture
- def tk_toplevel():
- tk = pytest.importorskip('tkinter')
- if sys.platform == 'darwin' and not core.ConfigVariableBool('want-tk', False):
- pytest.skip('"want-tk" must be true to use tkinter with Panda3D on macOS')
- try:
- root = tk.Toplevel()
- except tk.TclError as e:
- pytest.skip(str(e))
- yield root
- root.destroy()
- @pytest.fixture(scope='session')
- def graphics_pipe():
- from panda3d.core import GraphicsPipeSelection
- pipe = GraphicsPipeSelection.get_global_ptr().make_default_pipe()
- if pipe is None or not pipe.is_valid():
- pytest.skip("GraphicsPipe is invalid")
- yield pipe
- @pytest.fixture(scope='session')
- def graphics_engine():
- from panda3d.core import GraphicsEngine
- engine = GraphicsEngine.get_global_ptr()
- yield engine
- # This causes GraphicsEngine to also terminate the render threads.
- engine.remove_all_windows()
- @pytest.fixture
- def window(graphics_pipe, graphics_engine):
- from panda3d.core import GraphicsPipe, FrameBufferProperties, WindowProperties
- fbprops = FrameBufferProperties.get_default()
- winprops = WindowProperties.get_default()
- win = graphics_engine.make_output(
- graphics_pipe,
- 'window',
- 0,
- fbprops,
- winprops,
- GraphicsPipe.BF_require_window
- )
- graphics_engine.open_windows()
- if win is None:
- pytest.skip("GraphicsPipe cannot make windows")
- yield win
- if win is not None:
- graphics_engine.remove_window(win)
- @pytest.fixture(scope='module')
- def gsg(graphics_pipe, graphics_engine):
- "Returns a windowless GSG that can be used for offscreen rendering."
- from panda3d.core import GraphicsPipe, FrameBufferProperties, WindowProperties
- fbprops = FrameBufferProperties()
- fbprops.force_hardware = True
- buffer = graphics_engine.make_output(
- graphics_pipe,
- 'buffer',
- 0,
- fbprops,
- WindowProperties.size(32, 32),
- GraphicsPipe.BF_refuse_window
- )
- graphics_engine.open_windows()
- if buffer is None:
- pytest.skip("GraphicsPipe cannot make offscreen buffers")
- yield buffer.gsg
- if buffer is not None:
- graphics_engine.remove_window(buffer)
|