【发布时间】:2011-06-11 10:42:54
【问题描述】:
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();
【问题讨论】:
-
能贴出C代码吗?
-
m := new([16]float64)是否将数组初始化为 0,还是此时未初始化? -
哎呀,我在调用 LoadMatrixd 之前将矩阵设置为恒等
-
@Jim Buck new() 初始化为零值,但是,我认为它在上面的代码中没有正确使用
-
什么是setIdentity(),如果fmt.Println(m)的输出呢?