[ODE] Problem's when profiling graphics engine

Jon Watte (ODE) hplus-ode at mindcontrol.org
Tue Dec 12 11:55:53 MST 2006


It has nothing to do with handedness; it has to do with in-memory 
representation (row major vs column major).

If this takes 40% of your time, then you are memory bound. While there 
are transposed-matrix extensions, chances are, using those extensions 
will only push the problem elsewhere.

Also: is this 40% of the SYSTEM performance, or 40% of your APP 
performance? If it's of your app, and the app takes 5% of the system 
(the rest being spent in, say, the GL driver), then even if this 
function ran infinitely fast, you would only gain 2% overall performance.

Cheers,

          / h+


Andreas Fredriksson wrote:
> On 12/12/06, Kyle Hubert <khubert at gmail.com> wrote:
>   
>> I'm profiling my application and got interesting results. This is my
>> worst funtion and eating 40% of my time:
>>
>> /* Convert ODE's rotation matrix and pos into a GL matrix */
>> void convert_ode_to_gl(float *m, const float *p, const float *r) {
>>   m[0] = r[0]; m[4] = r[1]; m[8]  = r[2];  m[12] = p[0];
>>   m[1] = r[4]; m[5] = r[5]; m[9]  = r[6];  m[13] = p[1];
>>   m[2] = r[8]; m[6] = r[9]; m[10] = r[10]; m[14] = p[2];
>>   m[3] = 0;    m[7] = 0;    m[11] = 0;     m[15] = 1;
>> }
>>
>>     
>
> Looks like you're transposing ODE's matrices to change handedness
> before uploading them to OpenGL? If so, I would recommend you look in
> the the OpenGL extension (standard in 1.5 IIRC) that lets you upload
> transposed matrices instead. Many GL drivers can do clever things with
> that anyway so you don't have to :-)
>
> http://oss.sgi.com/projects/ogl-sample/registry/ARB/transpose_matrix.txt
>
> HTH, Andreas
>
>   


More information about the ODE mailing list