#177 glMultMatrix does not work correctly with transposed arrays

GL (74)


In the example attached, it shown that the function glMultMatrixf does not work correctly with transposed arrays. Apparently, the strides of a numpy.array object are ignored. This problem is present in version 3.0.0a6. It was not present in the 2.x versions.

In the program bug.py, the relevant part is marked by comments 'BEGIN INTERESTING PART' and 'END INTERESTING PART'. When transf.transpose() is given as argument, glGetFloatv(GL_MODELVIEW_MATRIX) clearly shows the problem. When transf.transpose().copy() is given as argument, the problem is 'fixed', but not in a very satisfying way.




  • Toon Verstraelen

    example program that demonstrates the bug

  • Mike C. Fletcher

    Logged In: YES
    Originator: NO

    I'll take a look at the test case. PyOpenGL 2.x was doing a copy *all* the time, so it was always using the unsatisfying solution. PyOpenGL 3.x *tries* not to do a copy, but it *should* do a copy (in the same manor) under the covers... it doesn't try to figure out your array strides or the like. In this case it's apparently failing to do the copy when it should.

  • Mike C. Fletcher

    • assigned_to: nobody --> mcfletch
    • status: open --> closed-fixed
  • Mike C. Fletcher

    Logged In: YES
    Originator: NO

    Code that was supposed to force to contiguous as a side-effect does not, in fact, force to contiguous form. CVS now uses an explicit function to force to contiguous. Test case added.


Log in to post a comment.