英文:
GO-OpenGL LoadMatrixd and GetDoublev issue
问题
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是float[16],设置为单位矩阵
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadMatrixf(m);
glRotatef(90, 0,1,0);
glGetFloatv(GL_MODELVIEW_MATRIX, m);
glPopMatrix();
英文:
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
The contents of m doesn't not change after the GetDoublev. I am trying to port some C code (which works and it basically this). What am I doing wrong?
The C code as requested:
//m is float[16] set to identity
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadMatrixf(m);
glRotatef(90, 0,1,0);
glGetFloatv(GL_MODELVIEW_MATRIX, m);
glPopMatrix();
答案1
得分: 1
在使用矩阵函数之前,您必须调用sdl.SetVideoMode()。
英文:
You must call sdl.SetVideoMode() before you can use Matrix functions.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论