gl.MatrixMode(gl.MODELVIEW)
gl.PushMatrix()
m := new([16]float64)
setIdentity(m)
gl.LoadMatrixd((*gl.GLdouble)(&m[0]))
gl.Rotated(90, 0, 1, 0)
gl.GetDoublev(gl.MODELVIEW_MATRIX, (*gl.GLdouble)(&m[0]))
gl.PopMatrix()
fmt.Printf("%f", m[0])
// m[0] == forward.x
GetDoublev之后,m的内容不会更改。我正在尝试移植一些C代码(它的工作原理和基本上是这样)。我究竟做错了什么?
所要求的C代码:
//m is float[16] set to identity
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadMatrixf(m);
glRotatef(90, 0,1,0);
glGetFloatv(GL_MODELVIEW_MATRIX, m);
glPopMatrix();
最佳答案
必须先调用sdl.SetVideoMode()才能使用Matrix函数。