glMultMatrix does not work correctly with transposed arrays
Brought to you by:
mcfletch
Hello,
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.
cheers,
Toon
example program that demonstrates the bug
Logged In: YES
user_id=34901
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.
Logged In: YES
user_id=34901
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.