OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 05:03:45
![OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码](/uploads/image/z/12655931-59-1.jpg?t=OpenGL%E4%B8%ADgltranslate%28%29%E7%9A%84%E5%87%BD%E6%95%B0%E4%BB%A3%E7%A0%81%2C%E6%88%91%E4%BC%9A%E7%94%A8%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%2C%E6%88%91%E8%A6%81%E7%9A%84%E6%98%AF%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%E7%9A%84%E5%AE%9E%E7%8E%B0%E4%BB%A3%E7%A0%81)
OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
是这样的,你电脑上OpenGL的实现代码其实是不可能看到的,它是跟着显卡走的,应该在显卡驱动程序里(或许是用汇编实现的),这是我的认识.
但并不是没有办法了,Mesa一直以开源的形式实现了OpenGL的一些接口,我们可以拿来学习和参考,比如你说的这个translate接口,其实就是一个模型矩阵运算问题,我摘抄了Mesa的m_matrix.c文件里的实现:
void _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
{
GLfloat *m = mat->m;
m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
mat->flags |= (MAT_FLAG_TRANSLATION |
MAT_DIRTY_TYPE |
MAT_DIRTY_INVERSE);
}
Mesa的网址是www.mesa3d.org,你可以去down代码.