<div dir="ltr"><div class="gmail_extra">You might want to try using this geometry library I've written to go along with OpenGL, fixed function or otherwise:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><a href="https://github.com/sysrpl/Bare.Game/blob/master/source/bare.geometry.pas#L317">https://github.com/sysrpl/Bare.Game/blob/master/source/bare.geometry.pas#L317</a><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Basic usage might be like this:</div><div class="gmail_extra"><br></div><div class="gmail_extra">var </div><div class="gmail_extra">  M: TMatrix;</div><div class="gmail_extra">  V: TVertex;</div><div class="gmail_extra">begin</div><div class="gmail_extra">  M.Identity;</div><div class="gmail_extra">  M.Translate(10, 0, 0);</div><div class="gmail_extra">  V := M * Vec(10, 10, 10);<br></div><div class="gmail_extra">  M.Rotate(0, 10, 0);</div><div class="gmail_extra">  V := M * V;<br></div><div class="gmail_extra">  WriteLn('X: ', V.X, ' Y: ', V.Y, 'Z: ', V.Z)</div><div class="gmail_extra">  M.Scale(0.5, 0.5, 0.5);</div><div class="gmail_extra">  V := M * V;<br></div><div class="gmail_extra">  WriteLn('X: ', V.X, ' Y: ', V.Y, 'Z: ', V.Z)</div><div class="gmail_extra">end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">And these matrices are compatible with OpenGL functions.</div></div>