Source code for picogl.backend.legacy.core.camera.matrices.setup

"""
OpenGL Matrix Retrieval Utility
===============================

This module provides a helper function to retrieve transformation matrices
from the OpenGL state machine. It uses `glGetFloatv` to query matrices such as
the modelview or projection matrix and returns them in a format compatible with GLSL.

Dependencies:
-------------
- numpy
- PyOpenGL

Functions:
----------

.. autofunction:: get_matrix
    Retrieves a 4x4 matrix from OpenGL and transposes it to match GLSL's column-major format.

Parameters:
-----------
- `mode`: OpenGL matrix mode (e.g., GL_MODELVIEW_MATRIX, GL_PROJECTION_MATRIX).

Returns:
--------
- A NumPy array of shape `(4, 4)` representing the requested matrix.

Usage Example:
--------------

.. code-block:: python

    modelview_matrix = get_matrix(GL_MODELVIEW_MATRIX)
    projection_matrix = get_matrix(GL_PROJECTION_MATRIX)
"""

from OpenGL.raw.GL.VERSION.GL_1_0 import GL_PROJECTION, glLoadIdentity, glMatrixMode
from OpenGL.raw.GLU import gluPerspective


[docs] def setup_matrices(aspect: float): """ setup_matrices :param aspect: float Aspect ratio :return: None """ # Set up projection matrix glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45.0, aspect, 0.1, 1000.0)
# Set up model_matrix view matrix with camera and user transforms