feat(shaders): Implement FBO capture lifecycle in ShaderManager
This commit is contained in:
37
tests/test_fbo_capture.py
Normal file
37
tests/test_fbo_capture.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
import OpenGL.GL as gl
|
||||
|
||||
def test_shader_manager_fbo_initialization():
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
mock_gl.glGenFramebuffers.return_value = 1
|
||||
mock_gl.glGenTextures.return_value = 2
|
||||
mock_gl.glCheckFramebufferStatus.return_value = mock_gl.GL_FRAMEBUFFER_COMPLETE
|
||||
|
||||
from src.shader_manager import ShaderManager
|
||||
manager = ShaderManager()
|
||||
|
||||
manager.setup_capture_fbo(800, 600)
|
||||
|
||||
assert manager.capture_fbo == 1
|
||||
assert manager.capture_tex == 2
|
||||
assert mock_gl.glGenFramebuffers.called
|
||||
assert mock_gl.glGenTextures.called
|
||||
assert mock_gl.glCheckFramebufferStatus.called
|
||||
|
||||
def test_shader_manager_capture_lifecycle():
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
mock_gl.glCheckFramebufferStatus.return_value = mock_gl.GL_FRAMEBUFFER_COMPLETE
|
||||
from src.shader_manager import ShaderManager
|
||||
manager = ShaderManager()
|
||||
|
||||
# Ensure setup is called on first capture
|
||||
manager.capture_begin(1024, 768)
|
||||
assert manager.fbo_width == 1024
|
||||
assert manager.fbo_height == 768
|
||||
assert mock_gl.glBindFramebuffer.called
|
||||
|
||||
mock_gl.glBindFramebuffer.reset_mock()
|
||||
manager.capture_end()
|
||||
# Verify unbind (glBindFramebuffer(..., 0))
|
||||
mock_gl.glBindFramebuffer.assert_called_with(mock_gl.GL_FRAMEBUFFER, 0)
|
||||
Reference in New Issue
Block a user