import numpy as np
import sys
from PySide6.Qt3DRender import Qt3DRender
from PySide6.QtCore import QByteArray, QLibraryInfo


if __name__ == '__main__':
    print('Python {}.{}.{}'.format(sys.version_info[0], sys.version_info[1],
                                   sys.version_info[2]))
    print(QLibraryInfo.build())
    array = np.random.randn(100, 100).astype(np.float32)

    data = QByteArray(array.tobytes())

    texture_image_data = Qt3DRender.QTextureImageData()
    texture_image_data.setWidth(array.shape[1])
    texture_image_data.setHeight(array.shape[0])
    texture_image_data.setDepth(1)
    texture_image_data.setLayers(1)
    texture_image_data.setMipLevels(1)
    texture_image_data.setFaces(1)
    texture_image_data.setData(data, array.itemsize)

    print(texture_image_data.data(0, 0, 0))

    texture_image_data_ptr = Qt3DRender.QTextureImageDataPtr(texture_image_data)

    # not possible to print because RuntimeError: Internal C++ object (PySide6.Qt3DRender.Qt3DRender.QTextureImageData) already deleted.
    print(texture_image_data.data(0, 0, 0))
