| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import pytest
- @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)
|